当前位置: 首页 > 编程笔记 >

javascript轻量级模板引擎juicer使用指南

狄法
2023-03-14
本文向大家介绍javascript轻量级模板引擎juicer使用指南,包括了javascript轻量级模板引擎juicer使用指南的使用技巧和注意事项,需要的朋友参考一下

使用方法

编译模板并根据数据立即渲染出结果

juicer(tpl, data);

仅编译模板暂不渲染,返回一个可重用的编译后的函数

 var compiled_tpl = juicer(tpl);

根据给定的数据对之前编译好的模板进行渲染

 var complied_tpl = juicer(tpl);
 var html = complied_tpl.render(data);

注册/注销自定义函数(对象)

juicer.register(‘function_name', function);
juicer.unregister(‘function_name');

默认参数配置

 {
   cache: true [false];
   script: true [false];
   error handling: true [false];
   detection: true [false];
 }

修改默认配置,逐条修改

 juicer.set('cache', false);

修改默认配置,批量修改

 juicer.set({
      'script': false,
      'cache': false
 })

Juicer 默认会对编译后的模板进行缓存,从而避免同一模板多次数据渲染时候重复编译所耗的时间, 如无特殊需要,强烈不建议关闭默认参数中的 cache,这么做将会令 Juicer 缓存失效从而降低性能.

语法

* ${变量}         

- 使用${}输出变量,其中_ 为对数据源的引用(${_})。支持使用自定义函数。

${name}
${name|function}
${name|function, arg1, arg2} 
 var = links: [{href: 'http://juicer.name', alt: 'Juicer'},
            {href: 'http://benben.cc', alt: 'Benben'},
            {href: 'http://ued.taobao.com', alt: 'Taobao UED'}  
           ]};
 var tpl = [ '{@each links as item}',
         '${item|links_build} <br />',  
         '{@/each}'].join('');
 var links = function(data) {    
   return '<a href="' + data.href + '" alt="' + data.alt + "" />';
};
juicer.register('links_build', links); //注册自定义函数
juicer(tpl, json);

* 转义/避免转义

     - ${变量} 在输出之前会对其内容进行转义,如果你不想输出结果被转义,可以使用 $${变量} 来避免这种情况。

 var json = {
    value: '<strong>juicer</strong>'
 };
 var escape_tpl='${value}';
 var unescape_tpl='$${value}';
 juicer(escape_tpl, json); //输出 '<strong>juicer</strong>'
 juicer(unescape_tpl, json); //输出 '<strong>juicer</strong>' 

*循环遍历 {@each} ... {@/each}          

     - 遍历数组,${index}当前索引

 {@each list as item, index}
     ${item.prop}
     ${index} //当前索引
 {@/each}

*判断 {@if} ... {@else if} ... {@else} ... {@/if}

*注释 {# 注释内容}

 {# 这里是注释内容}
*辅助
循环 {@each i in range(m, n)}

 {@each i in range(5, 10)}
     ${i}; //输出 5;6;7;8;9;
 {@/each}

*子模板嵌套 {@include tpl, data}

       - 子模板嵌套除了可以引入在数据中指定的子模板外,也可以通过指定字符串`#id`使用写在`script`标签中的模板代码.

       - HTML代码:

<script type="text/juicer" id="subTpl">
   I'm sub content, ${name}
</script>

- Javascript 代码:

var tpl = 'Hi, {@include "#subTpl", subData}, End.';

juicer(tpl, {
subData: {
name: 'juicer'
}
});

//输出 Hi, I'm sub content, juicer, End.
 //或者通过数据引入子模板,下述代码也将会有相同的渲染结果:
 
 var tpl = 'Hi, {@include subTpl, subData}, End.';
 
 juicer(tpl, {
     subTpl: "I'm sub content, ${name}",
     subData: {
        name: 'juicer'
     }
 });

一个完整的例子

HTML 代码:

 <script id="tpl" type="text/template">
   <ul>
     {@each list as it,index}
       <li>${it.name} (index: ${index})</li>
     {@/each}
     {@each blah as it}
       <li>
         num: ${it.num} <br />
         {@if it.num==3}
           {@each it.inner as it2}
             ${it2.time} <br />
           {@/each}
         {@/if}
       </li>
     {@/each}
   </ul>
 </script>

Javascript 代码:

 var data = {
   list: [
     {name:' guokai', show: true},
     {name:' benben', show: false},
     {name:' dierbaby', show: true}
   ],
   blah: [
     {num: 1},
     {num: 2},
     {num: 3, inner:[
       {'time': '15:00'},
       {'time': '16:00'},
       {'time': '17:00'},
       {'time': '18:00'}
     ]},
     {num: 4}
   ]
 };
 
 var tpl = document.getElementById('tpl').innerHTML;
 var html = juicer(tpl, data);
 类似资料:
  • 本文向大家介绍浅谈轻量级js模板引擎simplite,包括了浅谈轻量级js模板引擎simplite的使用技巧和注意事项,需要的朋友参考一下 模板地址:https://github.com/zhangshaolong/simplite欢迎各位提出宝贵意见及贡献代码。特点: 1:代码量少,学习成本低; 2:默认jsp语法标签方式,熟悉jsp的朋友可以直接按照jsp的语法书写模板; 3:使用原生js语法

  • 本文向大家介绍轻量级javascript 框架Backbone使用指南,包括了轻量级javascript 框架Backbone使用指南的使用技巧和注意事项,需要的朋友参考一下 Backbone 是一款基于模型-视图-控制器 MVC 模式的轻量级javascript 框架 ,可以用来帮助开发人员创建单页Web应用。 借助Backbone 我们可以使用REST的方式来最小化客户端和服务器间的数据传输,

  • 问题内容: 编写新的工作流引擎还是使用现有的BPM引擎更好吗:jBPM 5,Activiti 5? 我的应用程序是基于Web的应用程序,性能非常重要。我的疑问是,与编写简单的工作流引擎相比,使用jBPM / Activiti是否会增加性能开销。 如果我采用自我实现,我会错过工作流程的可视化。为了性能,可以进行交易。 问题答案: 这确实取决于您的要求。首先,查看您是否真的需要工作流引擎(此资源或其他

  • 具体查看ejs官方文档 https://github.com/mde/ejs

  • 我们自己实现了一个轻量级的模板引擎,不要问为什么不用smart之类的,因为我们认为没有必要为了一个小小的模板引擎而引入smaart这样复杂的实现。你可能会说,smart功能强大,支持各种标签,标签也是很强大,而且还可以对模板引擎进行各种"灵活"的配置... 这里我们觉得有必要说明一下: 框架的内置模板引擎基本上实现了我们日常开中所有常用的标签。 不常用的标签我们也做了巧妙的实现。 我们只提供了扩展

  • 内置模板引擎 视图的模板文件可以支持不同的解析规则,默认情况下无需手动初始化模板引擎。 可以通过下面的几种方式对模板引擎进行初始化。 配置文件 内置模板引擎的参数统一在配置目录的template.php文件中配置,例如: return [ // 模板引擎类型 支持 php think 支持扩展 'type' => 'Think', // 模板路径 '