详解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 相关文章推荐
Flash对联广告的关闭按钮讨论
Jan 30 Javascript
addEventListener()第三个参数useCapture (Boolean)详细解析
Nov 07 Javascript
js时钟翻牌效果实现代码分享
Jul 31 Javascript
jquery选择器简述
Aug 31 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
Nov 30 Javascript
jQuery 1.9.1源码分析系列(十四)之常用jQuery工具
Dec 02 Javascript
TypeScript Type Innference(类型判断)
Mar 10 Javascript
浅谈jQuery效果函数
Sep 16 Javascript
百度小程序之间的页面通信过程详解
Jul 18 Javascript
vue + elementUI实现省市县三级联动的方法示例
Oct 29 Javascript
vue项目启动出现cannot GET /服务错误的解决方法
Apr 26 Javascript
11个Javascript小技巧帮你提升代码质量(小结)
Dec 28 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中绘制图像的一些函数总结
2014/11/19 PHP
PHP用mb_string函数库处理与windows相关中文字符及Win环境下开启PHP Mb_String方法
2015/11/11 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
js 效率组装字符串 StringBuffer
2009/12/23 Javascript
JS在IE和FireFox之间常用函数的区别小结
2010/03/12 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
JavaScript实现按键精灵的原理分析
2017/02/21 Javascript
微信小程序 解析网页内容详解及实例
2017/02/22 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
微信小程序switch组件使用详解
2018/01/31 Javascript
通过vue提供的keep-alive减少对服务器的请求次数
2018/04/01 Javascript
vue实现简单的星级评分组件源码
2018/11/16 Javascript
jquery ajax 请求小技巧实例分析
2019/11/11 jQuery
微信域名检测接口调用演示步骤(含PHP、Python)
2019/12/08 Javascript
手把手教您实现react异步加载高阶组件
2020/04/07 Javascript
vue使用map代替Aarry数组循环遍历的方法
2020/04/30 Javascript
[01:31]完美与DOTA2历程
2014/07/31 DOTA
Python实现115网盘自动下载的方法
2014/09/30 Python
Python实现TCP/IP协议下的端口转发及重定向示例
2016/06/14 Python
老生常谈Python基础之字符编码
2017/06/14 Python
Python实现字符串格式化输出的方法详解
2017/09/20 Python
python中模块的__all__属性详解
2017/10/26 Python
Python二元赋值实用技巧解析
2019/10/25 Python
Python操作Jira库常用方法解析
2020/04/10 Python
python切割图片的示例
2020/11/12 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
HTML5 语音搜索只需一句代码
2013/01/03 HTML / CSS
毕业生自荐书
2013/12/18 职场文书
行政文秘岗位职责范本
2014/02/10 职场文书
40岁生日感言
2014/02/15 职场文书
成人继续教育实施方案
2014/03/01 职场文书
医院领导班子四风问题对照检查材料
2014/10/26 职场文书
2014大学班主任工作总结
2014/11/08 职场文书
搞笑婚前保证书
2015/02/28 职场文书
政工师工作总结2015
2015/05/26 职场文书