糖果实验室杂货铺

Candy Lab

Moonscript的常用WEB特性

1 year ago 0

下面是一个简单的moonscript脚本,值得注意的地方有几点。 1.Moonscript如何表示List列比数据结构。 2.Moonscript的路由样式。 3.Moonscript如何取得请求URL中的参数变量值。 4.Moonscript如何遍历List数据结构。(pairs) 5.Moonscript如何显示HTML。 6.Moonscript判空语句。

Lua种的Table在Moonscript种,便成了如下的格式。

-- Moonscript
[code] list_items = { "item1":"test item1" "item2":"test item2" "item3":"test item3" } [/code]

--Lua [code] local list_items = { ["item1"] = "test item1", ["item2"] = "test item2", ["item3"] = "test item3" }

[/code]

值得注意的地方就是,每个表元素之间没有了","逗号分割。

如何直接翻译成Lua后,代码形式如下:

2.Moonscript的路由样式。

[code] [/code]
Moonscript是用这种形式表示路由的“item”, “/item/:name”表示URL后面可以跟的参数表量。

3.Moonscript如何取得请求URL中的参数变量值。

[code] itemdescription = listitems[@params.name] [/code]
@params.name中,params表示输入参数的集合数据结构,".name"就是URL种的变量名。

4.Moonscript如何遍历List数据结构。(pairs) [code]
for item in pairs listitems li -> a href: @urlfor("item", name:item), item [/code]
Moonscript遍历Table,for关键字后面不用加do end结构。另外,可以使用pairs关键字,而没有ipairs关键字。

5.Moonscript如何显示HTML。

逻辑和模板放到一起写,“业务”和“表示”放到一起写不便于解耦,但是对于懒人来说,这个特性就比较方便了。

[code]
@html -> h1 @params.name h2 "Result list items" p item_description div "abc" [/code]

@html ->下面就可以直接用短关键字,快捷的生成HTML语句。

6.Moonscript判空语句。

[code]
itemdescription = listitems[@params.name] unless item_description [/code]

unless关键字用于判空,更接近自然语言。感觉用起来像Cobol的感觉,关键字好长。

后记: 其实Moonscript也有语法缩进的,如果缩进不对在编译的时候会报错,这和Python,Cobol很像。

另外,如下: [code] @html -> [/code]

“@html”和"->"之间有一个空格。

Moonscript懒人的福音。

代码列表: [code] 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 @html -> h1 "test page" a href: @urlfor("listitems"), "Check out my list items"

@html ->
  ul ->
    for item in pairs list_items
      li ->
        a href: @url_for("item", name:item), item

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"

@html ->
  for item in pairs list_div
    h1 item
    h1 "test"

[/code]


糖果实验室

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

Write a Comment