详解js模板引擎art template数组渲染的方法


Posted in Javascript onOctober 09, 2018

JavaScript 模板引擎作为数据与界面分离工作中最重要一环,越来越受开发者关注,模板引擎种类也是五花八门,我就说几个安全性高、错误处理调试优,执行速度快的有artTemplate(腾讯 14k)、juicer(国外 12k)这俩个,doT除了错误处理调试差以外其他的都和这两个一样,他有一个优点是小(4k),扯远啦。

art-template 是一个简约、超快的模板引擎。

什么是art-template

art-template 是一个简约、超快的模板引擎。它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。使用art-template也便于维护代码,以前我们渲染数据是以模板字符串的形式在js文件中写入的html内容,如果html内容需要修改,我们需要在js中修改。而用了模板引擎以后,我们只需要html文件中修改html内容。还有使用了模板引擎以后DOM操作的效率也会更高一点。

它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。在线速度测试。

art-template特性

  1. 拥有接近 JavaScript 渲染极限的的性能
  2. 调试友好:语法、运行时错误日志精确到模板所在行;支持在模板文件上打断点(Webpack Loader)
  3. 支持 Express、Koa、Webpack
  4. 支持模板继承与子模板
  5. 浏览器版本仅 6KB 大小

我们就讲一下讲简洁语法的渲染方式,template(filename, content)根据模板名渲染模板。前提是你已经对artTemplate有所了解,

今天我们就讲一下数组渲染的方法

数组渲染有数组对象和纯数组两种形式,我们先说数组对象,如后端返回我们接口,收到的就是一个数组。比如:

const res = [
{"name":"小明", "age":16, "marry":"单身"},
{"name":"小花","age":15, "marry":"有男朋友"},
{"name":"小胖","age":15, "marry":"有女朋友"},
{"name":"小丽","age":15, "marry":"单身"}
];

用artTemplate有个好处就是除了你的数据需要重组,其他的完全可以拿来直接用。如下

html

<div id="person"></div>

js

<script>
const res = [
{"name":"小明", "age":16, "marry":"单身"},
{"name":"小花","age":15, "marry":"有男朋友"},
{"name":"小胖","age":15, "marry":"有女朋友"},
{"name":"小丽","age":15, "marry":"单身"}
];
document.getElementById('person').innerHTML = template('personTemp', {data:res}); // 其实这里是把数组转为对象的形式传进的
</scrtip>

template

<script type="text/html" id="personTemp">
//写法一
{{each data}}
<li>{{$index}}索引 我叫{{$value.name}},今年{{$value.age}}岁,{{$value.marry}}</li>
{{/each}}
 
//写法二
{{each data item index}}
<li>{{index}}索引 我叫{{item.name}},今年{{item.age}}岁,{{item.marry}}</li>
{{/each}}
</script>

下面在看数组渲染,这是一个数组

const res = ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'];

html

<div id="interest"></div>

js

<script>
const res = ['文艺', '博客', '摄影', '电影', '民谣', '旅行', '吉他'];
document.getElementById('interest').innerHTML = template('interestTemp', {data:res}); // 其实这里是把数组转为对象的形式传进的
</scrtip>

template

<script type="text/html" id="interestTemp">
//写法一
{{each data}}
<li>{{$index}}索引 我喜欢{{$value.name}}</li>
{{/each}}
 
//写法二
{{each data item index}}
<li>{{index}}索引 我喜欢{{item}}</li>
{{/each}}
</script>

就说这么多吧,其实这种模板用着挺简单的很顺手。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript 面向对象编程(一) 封装
Aug 28 Javascript
Javascript图像处理—虚拟边缘介绍及使用方法
Dec 27 Javascript
js对table的td进行相同内容合并示例详解
Dec 27 Javascript
JavaScript四种调用模式和this示例介绍
Jan 02 Javascript
jQuery轮播图效果精简版完整示例
Sep 04 Javascript
jQuery联动日历的实例解析
Dec 02 Javascript
详解JavaScript模块化开发
Dec 04 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
Dec 25 Javascript
Vue.js watch监视属性知识点总结
Nov 11 Javascript
VUEX 数据持久化,刷新后重新获取的例子
Nov 12 Javascript
js实现表单项的全选、反选及删除操作示例
Jun 05 Javascript
JS+Canvas实现五子棋游戏
Aug 26 Javascript
angular4强制刷新视图的方法
Oct 09 #Javascript
Angular4.x Event (DOM事件和自定义事件详解)
Oct 09 #Javascript
Vue官方推荐AJAX组件axios.js使用方法详解与API
Oct 09 #Javascript
vue router 源码概览案例分析
Oct 09 #Javascript
Angular4 Select选择改变事件的方法
Oct 09 #Javascript
对angular 监控数据模型变化的事件方法$watch详解
Oct 09 #Javascript
JS判断用户用的哪个浏览器实例详解
Oct 09 #Javascript
You might like
缅甸的咖啡简史
2021/03/04 咖啡文化
php处理文件的小例子(解压缩,删除目录)
2013/02/03 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
PHP dirname简单使用代码实例
2020/11/13 PHP
Prototype使用指南之enumerable.js
2007/01/10 Javascript
javascript阻止scroll事件多次执行的思路及实现
2013/11/08 Javascript
javascript操作ul中li的方法
2015/05/14 Javascript
Bootstrap 网站实例之单页营销网站
2016/10/20 Javascript
Chrome不支持showModalDialog模态对话框和无法返回returnValue问题的解决方法
2016/10/30 Javascript
详解JS几种变量交换方式以及性能分析对比
2016/11/25 Javascript
微信小程序 生命周期和页面的生命周期详细介绍
2017/01/19 Javascript
求js数组的最大值和最小值的四种方法
2017/03/03 Javascript
一道面试题引发的对javascript类型转换的思考
2017/03/06 Javascript
判断颜色是否合法的正则表达式(详解)
2017/05/03 Javascript
jquery select插件异步实时搜索实例代码
2017/10/20 jQuery
angularjs使用gulp-uglify压缩后执行报错的解决方法
2018/03/07 Javascript
Angular2之二级路由详解
2018/08/31 Javascript
javascript网页随机点名实现过程解析
2019/10/15 Javascript
Vue实现开心消消乐游戏算法
2019/10/22 Javascript
解决vue无法侦听数组及对象属性的变化问题
2020/07/17 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
[08:02]DOTA2牵红线 zhou神抱得美人归
2014/03/22 DOTA
python实现查询IP地址所在地
2015/03/29 Python
用Python编写一个简单的Lisp解释器的教程
2015/04/03 Python
python3爬取数据至mysql的方法
2018/06/26 Python
Python爬虫文件下载图文教程
2018/12/23 Python
ubuntu上安装python的实例方法
2019/09/30 Python
使用Python实现牛顿法求极值
2020/02/10 Python
python deque模块简单使用代码实例
2020/03/12 Python
Python编写单元测试代码实例
2020/09/10 Python
How TDD works
2012/09/30 面试题
运动会致辞稿50字
2014/02/04 职场文书
2014党的群众路线教育实践活动总结报告
2014/10/31 职场文书
大学生实训报告总结
2014/11/05 职场文书
2019年手机市场的调研报告2篇
2019/10/10 职场文书
javascript函数式编程基础
2021/09/15 Javascript