详解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 SpiderMonkey中的函数序列化如何进行
Dec 05 Javascript
JavaScript对象创建及继承原理实例解剖
Feb 28 Javascript
jquery判断浏览器后退时候弹出消息的方法
Aug 11 Javascript
jQuery实现的简洁下拉菜单导航效果代码
Aug 26 Javascript
Angularjs中UI Router的使用方法
May 14 Javascript
限制只能输入数字的实现代码
May 16 Javascript
BootStrap智能表单实战系列(八)表单配置json详解
Jun 13 Javascript
window.close(); 关闭浏览器窗口js代码的总结介绍
Jul 14 Javascript
jquery datatable服务端分页
Aug 31 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
Jul 17 Javascript
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
如何在Vue中使用CleaveJS格式化你的输入内容
Dec 14 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
ThinkPHP多表联合查询的常用方法
2020/03/24 PHP
codeigniter实现get分页的方法
2015/07/10 PHP
thinkphp autoload 命名空间自定义 namespace
2015/07/17 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
PHP实现的权重算法示例【可用于游戏根据权限来随机物品】
2019/02/15 PHP
php7 图形用户界面GUI 开发示例
2020/02/22 PHP
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
基于jquery DOM写的类似微博发布的效果
2012/10/20 Javascript
javascript的字符串按引用复制和传递,按值来比较介绍与应用
2012/12/28 Javascript
DIV始终居中的js代码
2014/02/17 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
2014/11/20 Javascript
jQuery EasyUI菜单与按钮详解
2016/07/13 Javascript
Bootstrap模态框(modal)垂直居中的实例代码
2016/08/18 Javascript
Bootstrap3 Grid system原理及应用详解
2016/09/30 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
AngularJS实现的回到顶部指令功能实例
2017/05/17 Javascript
js学习总结_轮播图之渐隐渐现版(实例讲解)
2017/07/17 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
vue 计时器组件的实现代码
2017/09/14 Javascript
解决layui页面按钮点击无反应,也不报错的问题
2019/09/29 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
2020/08/14 Javascript
python解析xml文件实例分析
2015/05/27 Python
wxPython实现窗口用图片做背景
2018/04/25 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
django进阶之cookie和session的使用示例
2018/08/17 Python
Python理解递归的方法总结
2019/01/28 Python
wxPython之wx.DC绘制形状
2019/11/19 Python
如何搭建pytorch环境的方法步骤
2020/05/06 Python
python 如何把docker-compose.yaml导入到数据库相关条目里
2021/01/15 Python
html5的canvas方法使用指南
2014/12/15 HTML / CSS
C&A巴西网上商店:时尚、衣服、手机和鞋子
2020/06/07 全球购物
什么是用户模式(User Mode)与内核模式(Kernel Mode) ?
2014/07/21 面试题
国贸专业自荐信范文
2014/03/02 职场文书
2016年幼儿园教研活动总结
2016/04/05 职场文书
python套接字socket通信
2022/04/01 Python
MySQL中JOIN连接的基本用法实例
2022/06/05 MySQL