Lua Lapis的模板系统etlua
作者:糖果
主流的WEB开发框架都有模板系统,或是支持第三方的模板插件。Lua Lapis也不例外,也有自己的模板系统,叫做etlua。
说到模板系统,另外要提一下静态资源的问题,模板的话难免要使用css、js、image这种静态文件,为了扫除一部分障碍先说一下Openresty是如何设定静态目标的。(相对Django相对要简单很多。)
location /static/ {
alias static/;
}
在nginx.conf中加入这句话就可以了,在用lapis命令创建工程的时候就已经默认加入了。
对比看一下django对static的配置。
Django的静态文件设定,与Nginx的static设定方式存在差异,需要在对应应用的setting文件中进行配置,配置的内容如下:
SITE_ROOT=os.path.join(os.path.abspath(os.path.dirname(__file__)),'..')
STATIC_ROOT = os.path.join(SITE_ROOT,'static')
STATIC_URL='/static/'
STATICFILES_DIRS = (
("css", os.path.join(STATIC_ROOT,'css')),
("js", os.path.join(STATIC_ROOT,'js')),
("img", os.path.join(STATIC_ROOT,'img')),
)
在工程的Static目录下,只要添加一个新的静态目录,需追加定义到"STATICFILES_DIRS"中。
下面就是Lapis使用模板的例子。
1.创建工程。
mkdir tangguo
cd tangguo
lapis new
创建一个新工程后,系统创建了三个文件。
app.moon mime.types nginx.conf
具体文件的内容功能不介绍了,之前一篇已经写过了。
2.创建模板目录与模板文件。
使用lapis模板,要在默认生成的目录构成的基础上,新创建一个目录:“views” 目录 。
mkdir views
之后所有的ETLUA模板文件,都会发到这个目录中。
cd views
我们创建一个最简单的模板文件。
touch index.etlua
echo "say hi" > index.etlua
index.etlua
say hi
3.创建后端LUA代码。
让Lapis Lua代码支持模板,只要在原有的app.lua中加入一个“开关”和一段处理代码。
a). 加入一行代码,打开etlua支持。
app:enable("etlua")
b).加入对应的路入处理代码,此处的处理是什么都不做,只渲染一表模板网页。
app:match("/index", function(self)
--这就是LUA Web的风格,只需要一句,Lapis就会去views
--目录下找到index.etlua,然后进行渲染显示。
return { render = "index"}
end)
总结:
以上基本上是最简单的Lapis模板创建流程了。
回到tangguo目录下,运行lapis server。
打开浏览器,输入http://127.0.0.1:8000,就会在浏览器上显示文本“say hi”。
PS:在用VIM编辑.etlua文件的时候,默认是不显示语法高亮的,打开高亮需要在第一行加入:
PS:转载到其它平台请注明作者姓名及原文链接,请勿用于商业用途。