作者:糖果

在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暂时不会被覆盖了。