详解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 相关文章推荐
有关jQuery中parent()和siblings()的小问题
Jun 01 Javascript
jQuery 生成svg矢量二维码
Aug 09 Javascript
对Angular.js Controller如何进行单元测试
Oct 25 Javascript
JavaScript仿百度图片浏览效果
Nov 23 Javascript
微信小程序之ES6与事项助手的功能实现
Nov 30 Javascript
jQuery实现鼠标滑过图片移动特效
Dec 08 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
Apr 21 Javascript
React SSR样式及SEO的实践
Oct 22 Javascript
layui多iframe页面控制定时器运行的方法
Sep 05 Javascript
js实现旋转的星空效果
Nov 01 Javascript
ES6 Object.assign()的用法及其使用
Jan 18 Javascript
vant-ui组件调用Dialog弹窗异步关闭操作
Nov 04 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
常用的PHP数据库操作方法(MYSQL版)
2011/06/08 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
2011/07/28 PHP
PHP加密解密函数详解
2015/10/28 PHP
php封装的smarty类完整实例
2016/10/19 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
JS 动态获取节点代码innerHTML分析 [IE,FF]
2009/11/30 Javascript
JavaScript对象链式操作代码(jquery)
2010/07/04 Javascript
javascript制作loading动画效果 loading效果
2014/01/14 Javascript
网页广告中JS代码的信息监听示例
2014/04/02 Javascript
js图片自动轮播代码分享(js图片轮播)
2014/05/06 Javascript
jquery实现通用版鼠标经过淡入淡出效果
2014/06/15 Javascript
livereload工具实现前端可视化开发【推荐】
2016/12/23 Javascript
JavaScript三种绑定事件方式及相互之间的区别分析
2017/01/10 Javascript
js图片上传的封装代码
2017/08/01 Javascript
vue如何使用 Slot 分发内容实例详解
2017/09/05 Javascript
js通过Date对象实现倒计时动画效果
2017/10/27 Javascript
Vue代码分割懒加载的实现方法
2017/11/23 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
解决Angular2 router.navigate刷新页面的问题
2018/08/31 Javascript
vue工程全局设置ajax的等待动效的方法
2019/02/22 Javascript
TensorFlow打印tensor值的实现方法
2018/07/27 Python
Python 单元测试(unittest)的使用小结
2018/11/14 Python
python的mysql数据库建立表与插入数据操作示例
2019/09/30 Python
pandas-resample按时间聚合实例
2019/12/27 Python
Pytorch中实现只导入部分模型参数的方式
2020/01/02 Python
Python+OpenCV实现旋转文本校正方式
2020/01/09 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
Python requests上传文件实现步骤
2020/09/15 Python
python 密码学示例——理解哈希(Hash)算法
2020/09/21 Python
关于h5中的fetch方法解读(小结)
2017/11/15 HTML / CSS
使用Html5多媒体实现微信语音功能
2019/07/26 HTML / CSS
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
日语专业毕业生求职信
2013/12/04 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
工作失误检讨书
2015/01/26 职场文书
三种方式清除vue路由跳转router-link的历史记录
2022/04/10 Vue.js