TrimPath模板引擎使用指南

TrimPath 是一款轻量级的前端 JavaScript 模板引擎,语法类似 FreeMarker, Velocity,主要用于方便地渲染 json 数据

语法 Syntax

表达式 Expressions

表达式和修饰符(其它模板语言中叫做过滤器 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}

循环 Loops

 
 
  1. {for varName in listExpr}
  2. {/for}
  3. {for varName in listExpr}
  4.     ...循环主体...
  5. {forelse}
  6.     ...当 listExpr 是 null 或者 length 为 0 ...
  7. {/for}

变量声明 Variable Declarations

变量声明语句用花括号 {} 括起来,不需要关闭。类似 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 部分用来告诉模板引擎不用做任何解析渲染,直接输出。比如展示一个模板字符串本身

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

In-line JavaScript

eval blocks 用来执行 JavaScript 代码片段

 
 
  1. {eval} 
  2. ...模板渲染的时候执行的 JavaScript 代码... 
  3. {/eval

minify blocks 用来压缩内容中的换行符,比如压缩 HTML 属性

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

修饰符 Modifier

修饰符用来处理上一个表达式的结果,并输出内容。类似于 Linux shell 中的 pipe 命名,可以串联

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

内置修饰符

自定义修饰符

算定义修饰符可以持载到 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 一般用来封装可复用 HTML 模板,类似函数的功能。对于每个模板来说 macro 是私用的。如果想公用 macro,可以保存 macro 引用到 contextObject 上(下次调用 process() 方法的时候再手动挂载上!? )。需要在调用 process() 方法之前给 contextObject 设置一个空的 exported 属性:contextObject['exported'] = {}这个公用的 macro 设计的有点奇葩,可以参考这个 示例

 
 
  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.         '移动(TD-LTE)',
  7.         '联通(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. 内存:${ram|capitalize}
    \
  20. 网络:\
  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. 内存:16GB
  4. 网络:
  5.   移动(TD-LTE)
  6.  | 联通(TD-LTE)
  7.  | 电信(FDD-LTE)

【本文是专栏作者周琪力的原创稿件,转载请注明出处】

分享标题:TrimPath模板引擎使用指南
浏览地址:http://www.shufengxianlan.com/qtweb/news9/347459.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

猜你还喜欢下面的内容

手机网站建设知识

分类信息网站