上一章节我们初步了解了如何使用模板引擎, 现在我们深入了解模板引擎.
什么是模板引擎
“模板引擎(这里指Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的.”
“模板引擎提供特定的格式与语法, 以此为依据将模板转换为标准HTML文档.”
模板引擎的适用场景
适合服务端后台开发者.
Lua 模板引擎
admin.view
库中的template
方法实则为template
库中的compile
方法的引用, 这个方法返回一个函数, 调用返回的函数将会编译模板.
1. 基础语法
-
{ { Lua Expression }}
- Lua Expression是一段lua表达式; 作用为输出表达式的结果, 一些特殊符号将会被转义; -
{* Lua Expression *}
- Lua Expression是一段lua表达式; 作用为输出表达式的结果, 不会转义任何符号; -
{% Lua code %}
- 执行一段Lua代码, 如:{% for i = x, y do %} ... {% end %}
; -
{# comments #}
- comments仅作为注释, 不会包含在输出字符串内. 这段语法的作用类似lua内的--
与--[[]]
; -
{( template )}
- 导入其它模板文件, 并且支持传参:{("file.html", { message = "Hello, World" })}
; -
{-raw-} ... {-raw-}
- 定义在两端之中的内容将不会做任何处理.
2. 转义字符
这里列出了可能被转义的字符:
-
&
将会转义为&
; -
<
将会转义为<
; -
>
将会转义为>
-
"
将会转义为"
-
'
将会转义为'
-
/
将会转义为/
实战
实战以简单为主. 本章设计到内容主要为深入模板, 代码不会映射到其它章节中.
1. 字段展示
业务模型: 在页面上列出水果糖的个人信息.
<!-- view/userinfo.html -->
<!DOCTYPE html>
<html>
<head>
<title>{*title*}</title>
</head>
<body>
<h1 align="center">{*title*}</h1>
<p>姓名: {*name*}</p>
<p>性别: {*sex*}</p>
<p>年龄: {*age*}</p>
<p>身高: {*height*}</p>
<p>婚姻: {*marriage*}</p>
</body>
</html>
local httpd = require "httpd"
local app = httpd:new("http")
local view = require "admin.view"
app:use("/user", function(content)
return view.template("view/books.html") {
title = "水果糖的个人信息",
name = "水果糖",
sex = "男",
age = 29,
height = "176cm",
marriage = "已婚"
}
end)
app:static