Juicer 轻量级javascript模板引擎

juicer是一个javascript轻量级模板引擎。

使用方法

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

1 juicer(tpl, data);

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

1  var compiled_tpl = juicer(tpl);

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

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

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

1 juicer.register(‘function_name’, function);
2 juicer.unregister(‘function_name’);

默认参数配置

1 {
2      cache: true [false];
3      script: true [false];
4      error handling: true [false];
5      detection: true [false];
6 }

修改默认配置,逐条修改

1 juicer.set('cache', false);

修改默认配置,批量修改

1 juicer.set({
2           'script': false,
3           'cache': false
4 })

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

 *注释 {# 注释内容}

{# 这里是注释内容}

* 转义/避免转义

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

var json = {
value: '<strong>juicer</strong>'
};

var escape_tpl='${value}';
var unescape_tpl='$${value}';

juicer(escape_tpl, json); //输出 '&lt;strong&gt;juicer&lt;/strong&gt;'
juicer(unescape_tpl, json); //输出 '<strong>juicer</strong>'

*循环遍历 {@each} ... {@/each}          
     - 遍历数组,${index}当前索引

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

 

一个完整的例子 

HTML 代码:

<script type="text/template" id="provinceScript">
<option value="">请选择</option>
<{each province as it}>
<option value="<{$it.id}>"><{$it.province}></option>
<{/each}>
</script>

Javascript 代码:

var shtml = $('#provinceScript').html();
var svalue = juicer(shtml,reg);
$('select[name=province]').html(svalue);

原文地址:https://www.cnblogs.com/blog-dyn/p/6758077.html