Lapis的layout模板
作者:糖果
在Lapis框架的源码当中的views文件夹有一个layout.lua文件。
html = require "lapis.html"
class Default extends html.Widget
content: =>
html_5 ->
head -> title @title or "Lapis Page"
body -> @content_for "inner"
moonscript的代码很简单。提起这个事是因为, 如果不注意这段代码, 在用lapis的render渲染模板时,这个模板生成的"Lapis Page"的Hmtl title标签会覆盖你的etlua中的title标签。 {render = “index”}
这段程序会自动生成下面下的代码
<!DOCTYPE HTML><html lang="en"><head><title>Lapis Page</title></head><body>
下面是moonscript翻译后的lua代码
content = function(self)
return html_5(function()
head(function()
return title(self.title or "Lapis Page")
--return ""
end)
return body(function()
return self:content_for("inner")
end)
end)
end
需要在你的APP里设置self.title=“XXXXXXXX”
app:get("/",
function(self)
self.title="smartisan.black"
return { render = "index" }
end
)
这样title会被设置成samrtisan.black,但是上面自动生成代码其实还是多余的,最暴力的方法是把layout.lua代码改了。
head(function()
--return title(self.title or "Lapis Page")
eturn ""
end)
直接return ""空回去, 这样etlua中的title暂时不会被覆盖了。