• 使用模板引擎Trimpath 枫


    使用模板引擎,让开发模式更清晰,也让职责更明确,对维护对开发都是一件双赢的事情。

    曾经接触过SmartTemplate和Velocity,如果纯从编写前端模板来说,都不是太难的事情,大部分流行的模板引擎都支持类似的语法,如Smarty以及本文要介绍的JS模板引擎Trimpath。

    如果一个项目,需要前端大量的重绘数据来展现,大量的DOM树会随用户的操作而产生变化,这时,无论从功能上,还是性能上,以及维护的方便性 上,Trimpath template都是一个不错的选择。唯一遗憾的是,已经有近2年的时间没有更新了,是没有bug还是作者已经放弃掉了都不得而知。因为是好的东西,就不 管那么多了。

    Trimpath支持的语法:

    1)变量声明

    {var yihui = '一回'}
    ${yihui} // 一回


    2)变量(表达式)调节器

    Trimpath的变量调节器是可以扩展的,在使用上和Smarty几乎看不出区别:
    {var yihui = '<hr />'}
    ${yihui|escape|capitalize} // &LT;HR /&GT;

    Trimpath默认支持以下调节器:capitalize,escape(h),default,eat。同时支持表达式的调节,如:
    ${new Date()|toFormat:'YYYY-MM-DD'}
    你也可以根据自己的需要进行扩展,上面的toFormat就是自定义的。


    3)条件控制

    {var yihui = 'b'}
    {if yihui == 'a'}
          ${yihui}等于a
    {else}

    {elseif}
          ${yihui}不等于a
    {/if}


    4)循环控制

    假设数据为:
    var datas = [
       {'type' : 'market', 'name' : '市场基金', 'value' : 102.44},
    {'type' : 'channel', 'name' : '渠道基金', 'value' : 54},
    {'type' : 'customer', 'name' : '客服考核', 'value' : 98}
    ];

    模板可以这样写:
    <table width="400" cellspacing="0" cellpadding="0" border="1">
    {for x in datas}
         <tr>
          <td>${x.type}</td>
           <td>${x.name}</td>
           <td>${x.value}</td>
        </tr>
    {forelse}
       <tr>
           <td>没有数据</td>
        </tr>
    {/for}
    </table>
    这样书写,是不是要比字符串拼接更直观,维护也方便呢?


    5)支持宏定义

    宏可以理解为能够完成一定功能的函数,将通用的功能组织起来,有利于代码复用:
    {macro htmlList(list, optionalListType)}
        {var listType = optionalListType != null ? optionalListType : "ul"}
        <${listType}>
          {for item in list}
            <li>${item}</li>
          {/for}
        </${listType}>
    {/macro}

    ${htmlList([1,2,3], 'ol')}


    6)CDATA区域

    CDATA区域的内容将不被Trimpath解析,会原样输出
    {cdata}hello,${yihui}{/cdata}


    7)内联JS代码

    eval区域内可以直接书写JS代码:
    <select onchange="sel_onchange()">
        <option value="1">1</option>
        <option value="2">2</option>
    </select>
    {eval}
       sel_onchange = function() {
          alert('我不小心被change了');
       }
    {/eval}

  • 相关阅读:
    Windows 10 IoT Core 17101 for Insider 版本更新
    Windows 10 IoT Core 17093 for Insider 版本更新
    Windows 10 IoT Serials 10 – 如何使用OCR引擎进行文字识别
    2017年全国大学生物联网设计竞赛(TI杯)华东分赛区决赛总结
    Windows 10 IoT Core 17083 for Insider 版本更新
    My Feedback for Windows 10 IoT Core on Feedback Hub App (4/1/2017-1/23/2018)
    为 Azure IoT Edge 设备部署 Azure Stream Analytics 服务
    Azure IoT Edge on Raspberry Pi 3 with Raspbian
    Azure IoT Edge on Windows 10 IoT Core
    Mixed Reality-宁波市VR/AR技术应用高研班总结
  • 原文地址:https://www.cnblogs.com/mrray/p/2301775.html
Copyright © 2020-2023  润新知