使用方法

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

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

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

  1. html模板引擎 字符串长度,Web前端模板引擎の字符串模板

    这是一个系列文章,将会介绍目前Web前端领域里用到的三种模板引擎技术,它们分别是: 基于字符串的模板 基于Dom操作的模板 基于虚拟Dom的模板 本文是这个系列的第一篇,着重介绍基于字符串的模板引擎的 ...

  2. php 字符串里面计算,php 计算字符串长度

    在项目的开发中,常常遇到要计算一个字符串的长度(中英文结合),由于产品要求不同,每个中文的长度要求也不一样. 解决utf-8编码下的字符串长度(可自定义每个中英文算几个字节) /** * 计算字符串长 ...

  3. 前端模板引擎artTemplate---高性能JavaScript模板引擎

    关于artTemplate模板引擎的详细原理请移步高性能JavaScript模板引擎原理解析,本文只探讨如何使用.初学前端的人一般对于绑定数据都是使用原生js或者jquery来拼接字符串,此为hard ...

  4. ie模版字符串_字符串(String)模板引擎被视为是有害的

    用模板和一些数据来生成HTML不是一项特别繁重的任务.那些你必须要为HTML做的事才是效率低下的部分. 假如你有一个代表改变数据的UI: Current score: {{currentScore}} ...

  5. JavaScript之模板字符串的使用

    本文主要介绍JavaScript中模板字符串的使用.相对于字符串拼接而言,模板字符串提供了更加简洁的方法.下面介绍模板字符的几个特性. 1.支持单双引号同时书写 模板字符串由反引号"`&qu ...

  6. php 模板 {{}},PHP字符串模板引擎

    这是一个简易的字符串模板引擎.数据库模板引擎.区别于一般基于文件模板的引擎,这里的模板是一个字符串,因此可以将模板存于数据库或其他地方,而且不是编译型引擎,没有缓存文件,因而就不涉及到目录权限问题.模 ...

  7. 【javascript】模板字符串

    目录 模板字符串 示例1:单行.多行字符串 示例2:嵌入表达式 示例3:模板嵌套 示例4:eval + 模板字符串 示例5:模板字符串获取参数值 示例6:模板字符串获取表单元素的值 参考 模板字符串 ...

  8. ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签

    ThinkPHP6 模板引擎普通标签中,模板引擎运算符函数,循环标签,判断标签的使用,及一些特殊标签 模板引擎支持普通标签和XML标签方式两种标签定义,分别用于不同的目的: 标签类型 描述 普通标签 ...

  9. swig模板 PHP,认识一下swig前端模板引擎

    swig官网上的自我介绍是基于Node.js和浏览器的JavaScript模板引擎.下面介绍的是一些常用的基本语法,不过我还是极力推荐仔细阅读siwg官网教程. swig的安装 通过NPM:npm i ...

  10. html jquery 模板引擎,jquery template.js前端模板引擎

    作为现代应用,ajax的大量使用,使得前端工程师们日常的开发少不了拼装模板,渲染模板 在刚有web的时候,前端与后端的交互,非常直白,浏览器端发出URL,后端返回一张拼好了的HTML串.浏览器对其进行 ...

最新文章

  1. React Native —— App
  2. CF1019E Raining season
  3. CentOS7下的离线yum源搭建
  4. 如何判断当前主机是物理机还是虚拟机
  5. P2P in Flash Player 10
  6. 微信背单词类小程序,小鸡单词源码下载,打卡微信小程序
  7. ubuntu下qt运行报错 /usr/bin/ld: cannot find -lGL
  8. Luogu2295 MICE
  9. 20145237 《信息安全系统设计基础》第2周学习总结
  10. 神奇的python(四)之logging日志文件系统
  11. 一流设计导航|16map|效率导航最全设计类软件!速度收藏!!
  12. Drupal 更新开源编辑器 CKEditor,修复两个 XSS 漏洞
  13. Android系统信息获取 之八:WIFI设备和WIFI信号信息获取
  14. linux修改数据库密码出现的问题吗,关于linux下mysql修改root密码时遇到的问题
  15. 宝马冷却系统及电动冷却液泵部件(电子水泵)功能特性及标准
  16. SQL解密ctext字段内容函数
  17. Centos7安装oracle11g R2超级详细步骤
  18. Prometheus监控docker容器
  19. ubuntu踩坑笔记--开机进入recovering journal解决方法
  20. 大型分布式网站架构设计与实践3

热门文章

  1. 【序列化与反序列化流】
  2. 在python中打开文件显示没有权限PermissionError: [Errno 13] Permission denied:
  3. Python中如何打印空行
  4. unity中遍历Transform的子物体
  5. Mybatis学习随笔
  6. 【OpenCV入门教程之二】 一览众山小:OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析(转)...
  7. 【转载】总结C#获取当前路径的7种方法
  8. Windows server 2019 - Raid1 搭建+测试
  9. java writedouble_java-将double转换为32位表示形式(以及相反的...
  10. Wireshark网络封包分析软件——过滤表达式