html模板引擎 字符串长度,javascript轻量级模板引擎juicer使用指南

本文介绍Juicer.js模板引擎的使用方法,包括模板编译、数据渲染、自定义函数注册及配置修改等内容,并提供了丰富的示例代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用方法

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

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}
',

'{@/each}'].join('');

var links = function(data) {

return '';

};

juicer.register('links_build', links); //注册自定义函数

juicer(tpl, json);

* 转义/避免转义

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

var json = {

value: 'juicer'

};

var escape_tpl='${value}';

var unescape_tpl='$${value}';

juicer(escape_tpl, json); //输出 'juicer'

juicer(unescape_tpl, json); //输出 'juicer'

- 遍历数组,${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代码:

I'm sub content, ${name}

- 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 代码:

{@each list as it,index}

${it.name} (index: ${index})

{@/each}

{@each blah as it}

num: ${it.num}

{@if it.num==3}

{@each it.inner as it2}

${it2.time}

{@/each}

{@/if}

{@/each}

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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值