前端模板选择

http://nuysoft.com/bak/templating.html

define(function(require,exports,module){
	
	var box = require("../../weixin/box.js");

        var html_cn_text  =   ["<div>.....</div>"];
        var html_en_text  =   ["<div>.....</div>"];
        var html_en_text  =   ["<div>.....</div>"];


        var checkDomExist = function(){


            var lang = box.getLang();
    
            switch(lang){
              case 'zh_cn' : 
                  html_text = html_cn_text;
                  break;
              case 'zh_tw' :
                  html_text = html_cn_text;
                  break;
              case 'zh_hk' : 
                  html_text = html_cn_text;
                  break;
              default :
                  html_text = html_en_text;
                  break; 
            }

        }

 checkDomExist();

 module.exports = $.extend({"checkDomExist" : checkDomExist},box);

})
define(function(require, exports, module) {
  var source = [ '<div class="container" id="js-index">',
     '<!--餘額頁[[-->',
     '<div class="main">',
         '<div class="ico-wrap">',
             '<span class="ico-money"><!--图标--></span>',
         '</div>',
         '<p class="tips-txt">_{indexTitle}</p>',
         '<p class="tips-cnt" id="balance"></p>',
         '<div class="form-line-btn">',
             '<a class="btn-opt btn-green js-draw-index" >_{withdraw}</a>',
         '</div>',
         '<p class="tips-redpacket">',
             '<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACQAAAAqCAYAAADbCvnoAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAqFJREFUeNrslz1oFEEUx2eHVQNBgkokhIsSFAKS2NpYiATRKhBIYyEEDVeICBZi4weCaGGtIH40pogSE1JcQhAbMSTYJWUURCM5jAqHoEHMrf/JPW5nNzNze7uzdyv44HcsM7cz/3nvzbxZ5+tw/jBj7A7Yy5prX8AVFz/PQA/LhnW5VTGc+82eVyFNcxx/Lt96eUCE/+cVCNwmnqzDuaAPc6xvinKcsqyIa/TnQH7Ta5zb8Yg/VhsYAy20eEctqOKhj1LfbdAXGCyOuOB728ELcEj6xz2Th0aENHreCQrgoHKCqPi2AzwFx6W2V+CiSdAsuBUK3Rw4mTBge8BLMCS1LYFBsFErh66F3NgOpsE42BdDzABYBEdDYk6AEiuXmV5QpVOE7Dy4KoWP0Wregeegn3aNySOnwRswCTqlvgVwDBSVpwFOanlSJxT3U+Ax6FC8+wP8UbSLxG3VCH0ILoB1yQFMXvjWkAVdKELVSyEMTy6SfpcClZgPFLqRqhjdplS2BkV9oxAKYU/Ar4i5I1b9FpyjajBlmMMQMnl7q2036I4gSJxpa9reoKCqBtf4glrUdyK+abxjKh1NMx53JWl4x6aHboIjScVEE1R7kOt0iBaqxTi1kNW2S+CGtPtmtxRj64L02z8P7obaOqiI5uocK7GHzoD7mnq2n0S12/eQekUHwKMaxbWHcqsh2/49lRJTts+Dy41M6gcUtg1F3yJd6H6mI0i/7UfpBvhbalumu1IpvXPIbBN0rRDe+ET35bUkA7qRj3v9lp2hEK2ClaRlyGV27HVjiqutQlvHu26sgaN+MMZYhJtoxTphCbyZLIfCwizcn+wktcWL3D92hf0vKIOCXMXXZtM9tJohBxU5fXsXMyDmMzjreJ6XqRz6K8AAbDunKoioWMMAAAAASUVORK5CYII=" class="ico-img">',
             '<a href="#" id="go-luckymoney">_{go-luckymoney}</a>',
         '</p>',
     '</div>',
     '<!--餘額頁]]-->',
     '<div class="tips-link">_{tips-link}',
     '</div>',
 '</div>',
 '<!--弹窗:参考公共模块\inc\html\mod_pop_tips.shtml-->',
 '<div class="pop-tips balance-pop-tips" id="balance_tips_container">',
     '<div class="pop-tips-main">',
         '<a class="pop-btn-close" id="balance_tips_close"><!--关闭按钮--></a>',
         '<div class="pop-tips-cnt">',
             '<p>_{pop-tips-cnt}</p>',
         '</div>',
     '</div>',
 '</div>'].join("");
  return source;
})
//app.js
//引入
$.myspeed = require("../../../../g/js/mobile/global/hkwallet/myspeed.js");
//配置
$.myspeed.init({demainId_1 : "21370",demainId_2 : "1"},{basePerfId:"3"});


//其它页面
 var Detail = {
        title: '零錢详情',
    	body : tpl,
    	bodyClass:'rec-record-detail',
    	pageId : 4,//测速 
        init : function(){//增加测速点
            $.myspeed.addSpeed(this);
        },
        afterinit:function(){//上报
            $.SPA.emit("sendSpeed",this);
        }

};
//初始化&发送

$.mystat.init('hkwallet.balance.view.');

//发送
$.mystat.send('hkwallet.balance.init.charge');


Title Text

{
    "retcode": "0",
    "retmsg": "OK",
    "current_page": "1",
    "transactions": [
        {
            "amount_in_cent": "10",
            "bank_name": "0",
            "create_time": "1471348514",
            "currency_code": "HK\x24",
            "datetime": "0",
            "description": "",
            "instrument": "BALANCE",
            "merchant": "lowinwu2",
            "merchant_id": "o5PXlshcsO",
            "pay_state": "2",
            "payrecord_id": "1010013000000501201608160020585494",
            "product_desc": "",
            "transfer_type": "pay",
            "type": "transfer"
        },
        {
            "amount_in_cent": "1",
            "bank_name": "",
            "create_time": "1470815513",
            "currency_code": "HK\x24",
            "datetime": "1470815513",
            "description": "",
            "instrument": "CREDITCARD",
            "merchant": "\x25E6\x2588\x2591\x25E4\x25BB\x25AC\x25E9\x2583\x25BD\x25E6\x2598\x25AF\x25E8\x2587\x25AA\x25E5\x25B7\x25B1\x25E6\x2583\x25B3\x25E6\x25B3\x2595\x25E7\x259A\x2584\x25E5\x25A3\x25AB\x25E5\x258A\x259B\x25E9\x2587\x258F\x25E5\x2592\x258C\x25E8\x25B0\x2590\x25E7\x25A4\x25BE\x25E4\x25BC\x259A",
            "merchant_id": "3000000101",
            "pay_state": "0",
            "payrecord_id": "3000000101201608101038824047",
            "product_desc": "",
            "transfer_type": "",
            "type": "luckymoney"
        },
        {
            "amount_in_cent": "10",
            "bank_name": "0",
            "create_time": "1470297633",
            "currency_code": "HK\x24",
            "datetime": "1470387002",
            "description": "luckymoney",
            "instrument": "BALANCE",
            "merchant": "WeChat\x25E5\x2588\x25A9\x25E6\x2598\x25AF",
            "merchant_id": "3000000101",
            "pay_state": "7",
            "payrecord_id": "1010013000000101201608040020511762",
            "product_desc": "luckymoney",
            "transfer_type": "",
            "type": "Payment"
        },
        {
            "amount_in_cent": "17",
            "bank_name": "",
            "create_time": "1469763685",
            "currency_code": "HK\x24",
            "datetime": "1469763685",
            "description": "",
            "instrument": "CREDITCARD",
            "merchant": "\x25E5\x25A7\x259A\x25E5\x2585\x25B5",
            "merchant_id": "3000000101",
            "pay_state": "0",
            "payrecord_id": "3000000101201607291038291214",
            "product_desc": "",
            "transfer_type": "",
            "type": "luckymoney"
        },
        {
            "amount_in_cent": "5",
            "bank_name": "",
            "create_time": "1469618248",
            "currency_code": "HK\x24",
            "datetime": "1469618248",
            "description": "",
            "instrument": "CREDITCARD",
            "merchant": "\x25E6\x259D\x258E\x25E5\x25B8\x2585",
            "merchant_id": "3000000101",
            "pay_state": "0",
            "payrecord_id": "3000000101201607271038221415",
            "product_desc": "",
            "transfer_type": "",
            "type": "luckymoney"
        },
        {
            "amount_in_cent": "1",
            "bank_name": "",
            "create_time": "1469616578",
            "currency_code": "HK\x24",
            "datetime": "1469616578",
            "description": "",
            "instrument": "CREDITCARD",
            "merchant": "\x25E5\x25A7\x259A\x25E5\x2585\x25B5",
            "merchant_id": "3000000101",
            "pay_state": "0",
            "payrecord_id": "3000000101201607271038217535",
            "product_desc": "",
            "transfer_type": "",
            "type": "luckymoney"
        },
        {
            "amount_in_cent": "10",
            "bank_name": "",
            "create_time": "1469611166",
            "currency_code": "HK\x24",
            "datetime": "1469611166",
            "description": "",
            "instrument": "CREDITCARD",
            "merchant": "lowinwu2",
            "merchant_id": "3000000101",
            "pay_state": "0",
            "payrecord_id": "3000000101201607271038214353",
            "product_desc": "",
            "transfer_type": "",
            "type": "luckymoney"
        },
        {
            "amount_in_cent": "600",
            "bank_name": "0",
            "create_time": "1469609207",
            "currency_code": "HK\x24",
            "datetime": "0",
            "description": "",
            "instrument": "BALANCE",
            "merchant": "lowinwu2",
            "merchant_id": "o5PXlshcsO",
            "pay_state": "5",
            "payrecord_id": "1010013000000501201607270020471404",
            "product_desc": "",
            "transfer_type": "pay",
            "type": "transfer"
        },
        {
            "amount_in_cent": "8",
            "bank_name": "",
            "create_time": "1469418838",
            "currency_code": "HK\x24",
            "datetime": "1469418838",
            "description": "",
            "instrument": "CREDITCARD",
            "merchant": "Jing\x25E9\x259D\x2593",
            "merchant_id": "3000000101",
            "pay_state": "0",
            "payrecord_id": "3000000101201607251038102362",
            "product_desc": "",
            "transfer_type": "",
            "type": "luckymoney"
        },
        {
            "amount_in_cent": "10",
            "bank_name": "0",
            "create_time": "1469152352",
            "currency_code": "HK\x24",
            "datetime": "1469242202",
            "description": "luckymoney",
            "instrument": "BALANCE",
            "merchant": "WeChat\x25E5\x2588\x25A9\x25E6\x2598\x25AF",
            "merchant_id": "3000000101",
            "pay_state": "7",
            "payrecord_id": "1010013000000101201607220020450530",
            "product_desc": "luckymoney",
            "transfer_type": "",
            "type": "Payment"
        }
    ]
}

前端模板选择

1、Embedded JavaScript Templates (micro template)

      基于原生 JS 语法,解析简单、渲         染性       能接近极限;书写略烦,容易导         致模板中出现过多的业务代码而失控。---开发接入方便

 

2、Logic-less Templates (mustache)

     基于自定义语法,解析复杂、渲染性能不一---开发接入不利

语法,定义模板书写方式

前端模板选择

Mustache

独有语法结构:{{}}

{{#keyName}} {{/keyName}}

以#开始、以/结束表示区块,它会根据当前上下文中的键值来对区块进行一次或多次渲染,例如改写下 Demo 中的 tpl:


var tpl = '{{#address}} <p>{{street}},{{city}},{{state}}</p> {{/address}}';
var html = Mustache.render(tpl, data);

//输出:
<p>1 Infinite Loop Cupertino</br>,California,CA</p>

前端模板选择

Micro-Templating

实现方式

new Function()  执行数组中存放的每个变量
with()
--低性能
Introduce the data as local variables using with(){}
reg new RegExp(s + "=(.+?)" + e , "g"), // /<%=(.+?)%>/g
str.replace .replace(reg, "',$1,'")
p p.push("","","")
(function(obj
/**/) {
var p=[],print=function(){p.push.apply(p,arguments);};with(obj){p.push('     
            <li class="amt">                     <!--交互说明:当金额为收入时,绿色标识,在.text后加入income-->                     <span class="tit">',sincoming,'</span><span class="text ',paynumClass,'">',cur_type,' ',paynum,'</span>                 </li>                 <li>                     <span class="tit">',stype,'</span><span class="text">',type,'</span>                 </li>                 <li>                     <span class="tit">',stime,'</span><span class="text">',trade_time,'</span>                 </li>                 <li>                     <span class="tit">',stransaction,'</span><span class="text">',listid,'</span>                 </li>                 <li>                     <span class="tit">',snote,'</span><span class="text">',memo,'</span>                 </li>             ');}return p.join('');
})

? print有什么用-todo

前端模板选择

Underscore Templating

源自 Micro-Templating

实    现 :new Function() + with()

不同点 :加入自己循环函数

前端模板选择

EJS

方式一:

new EJS({ text: "Hello, <%= name %>" }).render({ name: "Jack" });  


方式二:

// in template.ejs  
  Hello, <%= name %>  
  
// in JS file  
  new EJS({ url: "template.ejs" }).render({ name: "Jack" });  
// 返回: Hello, Jack  

源自 Micro-Templating

new Function() + with()

前端模板选择

artTemplate

方式一:

new EJS({ text: "Hello, <%= name %>" }).render({ name: "Jack" });  


方式二:

// in template.ejs  
  Hello, <%= name %>  
  
// in JS file  
  new EJS({ url: "template.ejs" }).render({ name: "Jack" });  
// 返回: Hello, Jack  

源自 Micro-Templating

new Function() + with()

前端模板选择

aceTemplate

方式一:

new EJS({ text: "Hello, <%= name %>" }).render({ name: "Jack" });  


方式二:

// in template.ejs  
  Hello, <%= name %>  
  
// in JS file  
  new EJS({ url: "template.ejs" }).render({ name: "Jack" });  
// 返回: Hello, Jack  

源自 Micro-Templating

new Function() + with()

前端模板选择

By lowinwu

前端模板选择

前端模板选择

  • 1,431