转载

Moonscript的常用WEB特性

Moonscript的常用WEB特性

下面是一个简单的moonscript脚本,值得注意的地方有几点。

1.Moonscript如何表示List列比数据结构。

2.Moonscript的路由样式。

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

4.Moonscript如何遍历List数据结构。(pairs)

5.Moonscript如何显示HTML。

6.Moonscript判空语句。

1.Moonscript如何表示List列比数据结构。

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后,代码形式如下:

2.Moonscript的路由样式。

   [item: "/item/:name"]:=> 

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

3.Moonscript如何取得请求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关键字。

5.Moonscript如何显示HTML。

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

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

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

6.Moonscript判空语句。

         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:转载到其它平台请注明作者姓名及原文链接,请勿用于商业用途。

原文链接

正文到此结束
Loading...