日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
TrimPath模板引擎使用指南

TrimPath 是一款輕量級的前端 JavaScript 模板引擎,語法類似 FreeMarker, Velocity,主要用于方便地渲染 json 數(shù)據(jù)

語法 Syntax

表達(dá)式 Expressions

表達(dá)式和修飾符(其它模板語言中叫做過濾器 filter)中間用 | 分割且 不能有空格

 
 
  1. ${expr}
  2. ${expr|modifier}
  3. ${expr|modifier1:arg1,arg2|modifier2:arg1,arg2|...|modifierN:arg1,arg2}

語句 Statements

控制流 Control Flow

 
 
  1. {if testExpr}
  2.     {elseif testExpr}
  3.     {else}
  4. {/if}

循環(huán) Loops

 
 
  1. {for varName in listExpr}
  2. {/for}
  3. {for varName in listExpr}
  4.     ...循環(huán)主體...
  5. {forelse}
  6.     ...當(dāng) listExpr 是 null 或者 length 為 0 ...
  7. {/for}

變量聲明 Variable Declarations

變量聲明語句用花括號 {} 括起來,不需要關(guān)閉。類似 JavaScript 中的賦值語句

 
 
  1. {var varName}
  2. {var varName = varInitExpr}

宏聲明 Macro Declarations

 
 
  1. {macro macroName(arg1, arg2, ...argN)}
  2.     ...macro 主體...
  3. {/macro}

CDATA 部分 CDATA Text Sections

CDATA 部分用來告訴模板引擎不用做任何解析渲染,直接輸出。比如展示一個(gè)模板字符串本身

 
 
  1. {cdata}
  2.     ${customer.firstName} ${customer.lastName}
  3. {/cdata}

In-line JavaScript

eval blocks 用來執(zhí)行 JavaScript 代碼片段

 
 
  1. {eval} 
  2. ...模板渲染的時(shí)候執(zhí)行的 JavaScript 代碼... 
  3. {/eval

minify blocks 用來壓縮內(nèi)容中的換行符,比如壓縮 HTML 屬性

 
 
  1.       display:none;
  2.       margin: 1em;
  3.       border: 1px solid #333;
  4.       background: #eee;
  5.       padding: 1em;
  6.     {/minify}">
  7.   ...

修飾符 Modifier

修飾符用來處理上一個(gè)表達(dá)式的結(jié)果,并輸出內(nèi)容。類似于 Linux shell 中的 pipe 命名,可以串聯(lián)

 
 
  1. ${name|capitalize}
  2. ${name|default:"noname"|capitalize}

內(nèi)置修飾符

  • capitalize 返回大寫內(nèi)容
  • default:valueWhenNull 如果內(nèi)容為 null,返回 valueWhenNull
  • eat 返回空內(nèi)容,一般用于表達(dá)式求值后又不想展示輸出的內(nèi)容
  • escape 轉(zhuǎn)換 HTML 字符實(shí)體,比如: & 轉(zhuǎn)換成 &
  • h 和 escape 效果一樣

自定義修飾符

算定義修飾符可以持載到 contextObject 上的 _MODIFIERS 屬性上

 
 
  1. var Modifiers = { toFixed: function(n, num) { return n.toFixed(num) } } 
  2. var out = '{var nu = 12}${nu|toFixed:2}'.process({ _MODIFIERS: Modifiers });

宏 Macro

macro 一般用來封裝可復(fù)用 HTML 模板,類似函數(shù)的功能。對于每個(gè)模板來說 macro 是私用的。如果想公用 macro,可以保存 macro 引用到 contextObject 上(下次調(diào)用 process() 方法的時(shí)候再手動(dòng)掛載上!? )。需要在調(diào)用 process() 方法之前給 contextObject 設(shè)置一個(gè)空的 exported 屬性:contextObject['exported'] = {}這個(gè)公用的 macro 設(shè)計(jì)的有點(diǎn)奇葩,可以參考這個(gè) 示例

 
 
  1. {macro link(href, name)}
  2.     ${name}
  3. {/macro}
  4. ${link('http://google.com', 'google')}      => google
  5. ${link('http://facebook.com', 'facebook')}  => facebook

示例

 
 
  1. var data = {
  2.     name: 'iPhone 6 Plus',
  3.     weight: 480,
  4.     ram: '16gb',
  5.     networks: [
  6.         '移動(dòng)(TD-LTE)',
  7.         '聯(lián)通(TD-LTE)',
  8.         '電信(FDD-LTE)'
  9.     ]
  10. }
  11. data._MODIFIERS = {
  12.     toFixed: function(n, num) {
  13.         return n.toFixed(num)
  14.     }
  15. }
  16. var template = '\
  17. 名稱: ${name}
    \
  18. 重量:${weight|toFixed:2}
    \
  19. 內(nèi)存:${ram|capitalize}
    \
  20. 網(wǎng)絡(luò):\
  21. {for item in networks}\
  22.   {if item_index!=0}|{/if}\
  23.   ${item}\
  24. {/for}';
  25. template.process(data)

上面的代碼輸出:

 
 
  1. 名稱: iPhone 6 Plus
  2. 重量:480.00
  3. 內(nèi)存:16GB
  4. 網(wǎng)絡(luò):
  5.   移動(dòng)(TD-LTE)
  6.  | 聯(lián)通(TD-LTE)
  7.  | 電信(FDD-LTE)

【本文是專欄作者周琪力的原創(chuàng)稿件,轉(zhuǎn)載請注明出處】


網(wǎng)站標(biāo)題:TrimPath模板引擎使用指南
文章地址:http://www.dlmjj.cn/article/copgess.html