有关构建此项目的动机的更多信息,请访问:http://etiene.net/10/sailor
Sailor 已在 Linux、Mac OS X 和 Windows 下进行了测试,目前与带有 mod_lua 或 mod_pLua 的 Apache、带有 ngx_lua 的 Nginx、带有 mod_magnet 的 Lwan、Lighttpd 或任何支持 CGI 的 Web 服务器兼容,如 Civetweb、Mongoose 和 Xavante(如果是 CGILua)存在。
对于 Linux,请参阅 INSTALL_LINUX.md (Ubuntu) 或 INSTALL_LINUX_ARCH.md (Arch Linux)
对于 Windows,请参阅 INSTALL_WIN.md
对于 Mac,请参阅 INSTALL_MAC.md
默认的 Sailor 应用程序将具有以下目录树结构:
转到 /controllers 并创建您的第一个控制器!它应该是一个lua模块。随意命名,我们的示例是“site.lua”。我们将提供两个页面,一个可通过 /?r=site 访问,默认情况下将运行 site.index(),另一个可通过 /?r=site/notindex 访问。
local site = {}
local model = require " sailor.model "
function site . index ( page )
local foo = ' Hello world '
local User = model ( " user " )
local u = User : new ()
u . username = " etiene "
u . password = " a_password "
local valid , err = u : validate () -- validate() will check if your attributes follow the rules!
if not valid then
foo = " Boohoo :( "
end
-- Warning: this is a tech preview and some methods of model class do not avoid SQL injections yet.
page : render ( ' index ' ,{ foo = foo , name = u . username }) -- This will render /views/site/index.lp and pass the variables 'foo' and 'name'
end
function site . notindex ( page )
page : write ( ' <b>Hey you!</b> ' )
end
return site
转到 /views,创建一个名为“site”的目录以匹配您的控制器名称并创建您的第一个页面,我们的示例是index.lp
< ?=foo? >
< p >
Hi, < ?=name? >
</ p >
有关 html 和 Lua 页面的更多信息,请访问 http://keplerproject.github.io/cgilua/manual.html#templates
有关更多示例,您可以检查测试控制器(/controllers/test.lua)、测试视图(/views/test/*)和用户模型(/models/user.lua)
http://sailorproject.org/?r=docs
欢迎贡献!只需发出拉取请求:) 请尝试遵循存储库其余部分的代码风格。
如果您为 Sailor 制作了扩展并希望分享,请与我们联系,以便我可以将其添加到网站上。
该存储库包含以下第三方 MIT 许可代码:
拥抱!不是虫子。对于错误,请填写问题! :)
https://twitter.com/etiene_d
加入我们的 Google 群组以获得邮件列表和支持