糖果实验室杂货铺

Candy Lab

Lapis的layout模板

2 years ago 0

作者:糖果

在Lapis框架的源码当中的views文件夹有一个layout.lua文件。

None
1
2
3
4
5
6
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"}

这段程序会自动生成下面下的代码

None
1
<!DOCTYPE HTML><html lang="en"><head><title>Lapis Page</title></head><body>

下面是moonscript翻译后的lua代码

None
1
2
3
4
5
6
7
8
9
10
11
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"

None
1
2
3
4
5
6
app:get("/",
function(self)
    self.title="smartisan.black"
    return { render = "index" }
end
)

这样title会被设置成samrtisan.black,但是上面自动生成代码其实还是多余的,最暴力的方法是把layout.lua代码改了。

None
1
2
3
4
head(function()
          --return title(self.title or "Lapis Page")
          eturn "" 
        end)

直接return ""空回去, 这样etlua中的title暂时不会被覆盖了。


糖果实验室

Openresty中文编程网
IKBC经典机械键盘
机械键盘领券优惠购买

Write a Comment