下面是一个简单的moonscript脚本,值得注意的地方有几点。
1.Moonscript如何表示List列比数据结构。
2.Moonscript的路由样式。
3.Moonscript如何取得请求URL中的参数变量值。
4.Moonscript如何遍历List数据结构。(pairs)
5.Moonscript如何显示HTML。
6.Moonscript判空语句。
Lua种的Table在Moonscript种,便成了如下的格式。
-- Moonscript
list_items = { "item1":"test item1" "item2":"test item2" "item3":"test item3" }
--Lua
local list_items = { ["item1"] = "test item1", ["item2"] = "test item2", ["item3"] = "test item3" }
值得注意的地方就是,每个表元素之间没有了","逗号分割。
如何直接翻译成Lua后,代码形式如下:
[item: "/item/:name"]:=>
Moonscript是用这种形式表示路由的“item”, “/item/:name”表示URL后面可以跟的参数表量。
item_description = list_items[@params.name]
@params.name中,params表示输入参数的集合数据结构,".name"就是URL种的变量名。
4.Moonscript如何遍历List数据结构。(pairs)
for item in pairs list_items li -> a href: @url_for("item", name:item), item
Moonscript遍历Table,for关键字后面不用加do end结构。另外,可以使用pairs关键字,而没有ipairs关键字。
逻辑和模板放到一起写,“业务”和“表示”放到一起写不便于解耦,但是对于懒人来说,这个特性就比较方便了。
@html -> h1 @params.name h2 "Result list items" p item_description div "abc"
@html ->下面就可以直接用短关键字,快捷的生成HTML语句。
item_description = list_items[@params.name] unless item_description
unless item_description
unless关键字用于判空,更接近自然语言。感觉用起来像Cobol的感觉,关键字好长。
后记:
其实Moonscript也有语法缩进的,如果缩进不对在编译的时候会报错,这和Python,Cobol很像。
另外,如下:
@html ->
“@html”和"->"之间有一个空格。
Moonscript懒人的福音。
代码列表:
lapis = require "lapis" list_items = { "item1":"test item1" "item2":"test item2" "item3":"test item3" } list_div = { "div1":"div1" "div2":"div2" "div3":"div3" } class extends lapis.Application [index: "/"]:=> @html -> h1 "test page" a href: @url_for("list_items"), "Check out my list items" [list_items: "/items"]: => @html -> ul -> for item in pairs list_items li -> a href: @url_for("item", name:item), item [item: "/item/:name"]:=> item_description = list_items[@params.name] unless item_description return "Not found", status:404 @html -> h1 @params.name h2 "Result list items" p item_description div "abc" [test: "/test"]:=> @html -> for item in pairs list_div h1 item h1 "test"
作者:糖果
PS:转载到其它平台请注明作者姓名及原文链接,请勿用于商业用途。
原文链接