详解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 日期常用的方法
Nov 11 Javascript
js 多种变量定义(对象直接量,数组直接量和函数直接量)
May 24 Javascript
在jQuery 1.5中使用deferred对象的代码(翻译)
Mar 10 Javascript
基于JQuery 选择器使用说明介绍
Apr 18 Javascript
javascript显示用户停留时间的简单实例
Aug 05 Javascript
window.showModalDialog()返回值的学习心得总结
Jan 07 Javascript
JS OffsetParent属性深入解析
Jan 13 Javascript
JQuery对表格进行操作的常用技巧总结
Apr 23 Javascript
JS判断form内所有表单是否为空的简单实例
Sep 09 Javascript
javascript实现秒表计时器的制作方法
Feb 16 Javascript
vue.js 使用axios实现下载功能的示例
Mar 05 Javascript
vue.js this.$router.push获取不到params参数问题
Mar 03 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代码简化
2010/02/08 PHP
关于php支持分块与断点续传文件下载功能代码
2014/05/09 PHP
PHP使用Redis替代文件存储Session的方法
2017/02/15 PHP
JS限制Textarea文本域字符个数的具体实现
2013/08/02 Javascript
深入理解javascript严格模式(Strict Mode)
2014/11/28 Javascript
深入浅析同源策略和跨域访问
2015/11/26 Javascript
干货分享:让你分分钟学会javascript闭包
2015/12/25 Javascript
详解Javascript中的原型OOP
2016/10/12 Javascript
Vue开发过程中遇到的疑惑知识点总结
2017/01/20 Javascript
js图片放大镜效果实现方法详解
2020/10/28 Javascript
vue基于Element构建自定义树的示例代码
2017/09/19 Javascript
详解通过源码解析Node.js中cluster模块的主要功能实现
2018/05/16 Javascript
vue 组件的封装之基于axios的ajax请求方法
2018/08/11 Javascript
vue实现在一个方法执行完后执行另一个方法的示例
2018/08/25 Javascript
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
js实现录音上传功能
2019/11/22 Javascript
JavaScript 正则应用详解【模式、欲查、反向引用等】
2020/05/13 Javascript
Vue实现购物车基本功能
2020/11/08 Javascript
从零学Python之入门(三)序列
2014/05/25 Python
python time模块用法实例详解
2014/09/11 Python
分享几道你可能遇到的python面试题
2017/07/24 Python
pandas object格式转float64格式的方法
2018/04/10 Python
python实现爬山算法的思路详解
2019/04/09 Python
Python定时器线程池原理详解
2020/02/26 Python
浅谈pycharm导入pandas包遇到的问题及解决
2020/06/01 Python
Python scrapy爬取小说代码案例详解
2020/07/09 Python
matplotlib 使用 plt.savefig() 输出图片去除旁边的空白区域
2021/01/05 Python
Html5 canvas实现粒子时钟的示例代码
2018/09/06 HTML / CSS
Canvas引入跨域的图片导致toDataURL()报错的问题的解决
2018/09/19 HTML / CSS
美国领先的奢侈手表在线零售商:WatchMaxx
2017/12/17 全球购物
城市观光通行证:The Sightseeing Pass
2018/04/28 全球购物
2014年党课学习材料
2014/05/11 职场文书
做一个有道德的人活动方案
2014/08/25 职场文书
出差报告格式模板
2014/11/06 职场文书
创业分两种人:那么哪些适合创业?,哪些适合不适合创业呢?
2019/08/23 职场文书
导游词之无锡唐城
2019/12/12 职场文书