artTemplate

高性能JavaScript模板引擎原理解析

我们两清 提交于 2019-12-10 16:43:23
本文将用最简单的示例代码描述现有的 javascript 模板引擎的原理,包括新一代 javascript 模板引擎 artTemplate 的特性实现原理,欢迎共同探讨。 artTemplate 介绍 artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。在 chrome 下渲染效率测试中分别是知名引擎 Mustache 与 micro tmpl 的 25 、 32 倍。 除了性能优势外,调试功能也值得一提。模板调试器可以精确定位到引发渲染错误的模板语句,解决了编写模板过程中无法调试的痛苦,让开发变得高效,也避免了因为单个模板出错导致整个应用崩溃的情况发生。 artTemplate 这一切都在 1.7kb(gzip) 中实现! javascript 模板引擎基本原理 虽然每个引擎从模板语法、语法解析、变量赋值、字符串拼接的实现方式各有所不同,但关键的渲染原理仍然是动态执行 javascript 字符串。 关于动态执行 javascript 字符串,本文以一段模板代码举例: 这是一段非常朴素的模板写法,其中,”" 为 closeTag (逻辑语句闭合标签),若 openTag 后面紧跟 “=” 则会输出变量的内容。

模板引擎

不羁的心 提交于 2019-12-10 08:28:04
模板引擎 是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。 为什么要使用模板引擎 我们通过ajax获取到数据后,需要把数据渲染到页面,在学习模板引擎前,我们的做法是大量的拼接字符串,对于结构简单的页面,这么做还行,但是如果页面结构很复杂,使用拼串的话 代码可阅读性非常的差,而且非常容易出错,后期代码维护也是相当的麻烦。 作用:代替前面渲染数据是拼接字符串操作 实际工作渲染数据使用的模板引擎 常见的模板引擎 BaiduTemplate:http://tangram.baidu.com/BaiduTemplate/ velocity.js:https://github.com/shepherdwind/velocity.js/ ArtTemplate:https://github.com/aui/artTemplate artTemplate是使用最广泛,效率最高的模板引擎,需要大家掌握。 artTemplate的使用 github地址 中文api地址 artTemplate入门 1.引入模板引擎的js文件 < script src = "template-web.js" > < / script > 2.准备模板 <!-- 指定了type为text/template后,这一段script标签并不会解析

Node学习笔记 结合核心模块url实现评论提交

被刻印的时光 ゝ 提交于 2019-12-09 11:50:34
Node.js 核心方法 url url 模块用于处理与解析 URL 使用方法如下: const url = require('url'); 本实例用到的核心模块方法有 url.parse 、 .pathname 、``.query` url.parse(urlStr[, parseQueryString[, slashesDenoteHost]]) 将一个 URL 字符串转换成对象并返回 urlStr // url字符串 parseQueryString // 为true时将使用查询模块分析查询字符串,默认为false slashesDenoteHost // 默认为 false url.pathname 获取及设置 URL 的路径部分 url.query 获取 URL 参数部分( ? 后部分) 实例(假设页面请求地址为 /url?name=sfatpaper&data=20191129 ): var http = require('http') var url = require('url') http.createServer((req, res) => { var parseObj = url.parse(req.url, true) // 使用 url.parse 方法获取请求 url 的对象 var pathName = parseObj.pathname //

Node学习笔记 结合核心模块url实现评论提交

我的未来我决定 提交于 2019-12-08 17:14:33
Node.js 核心方法 url url 模块用于处理与解析 URL 使用方法如下: const url = require('url'); 本实例用到的核心模块方法有 url.parse 、 .pathname 、``.query` url.parse(urlStr[, parseQueryString[, slashesDenoteHost]]) 将一个 URL 字符串转换成对象并返回 urlStr // url字符串 parseQueryString // 为true时将使用查询模块分析查询字符串,默认为false slashesDenoteHost // 默认为 false url.pathname 获取及设置 URL 的路径部分 url.query 获取 URL 参数部分( ? 后部分) 实例(假设页面请求地址为 /url?name=sfatpaper&data=20191129 ): var http = require('http') var url = require('url') http.createServer((req, res) => { var parseObj = url.parse(req.url, true) // 使用 url.parse 方法获取请求 url 的对象 var pathName = parseObj.pathname //

前端模板引擎artTemplate.js

 ̄綄美尐妖づ 提交于 2019-12-05 07:38:42
. 关于artTemplate模板引擎的详细原理请移步高性能JavaScript模板引擎原理解析,本文只探讨如何使用。初学前端的人一般对于绑定数据都是使用原生js或者jquery来拼接字符串,此为hardcode,而且拼接的过程很头疼,什么单引号双引号,符号嵌入多了就头晕眼花容易出错,如果会调试的话可以看到渲染模板的效率也很低下。本文将介绍一种新的利用模板引擎来渲染数据的方法。 (1)artTemplate基础使用方法 一:简洁语法版 <!DOCTYPE html> <html> <head> <title>demo1</title> <script type="text/javascript" src="js/template-web.js"></script> </head> <body> <div id="content"></div> <script id="test" type="text/html"> {{if isAdmin}} <h1>{{title}}</h1> <ul> {{each list value i}} <li>索引{{i+1}}:{{value}}</li> {{/each}} </ul> {{/if}} </script> <script> var data = { title: '基本例子', isAdmin:true, list:['文艺',

artTemplate的简单用法

匆匆过客 提交于 2019-12-03 05:26:07
在实际开发中,我们会使用模板引擎来提高开发效率。而众多的模板引擎中,artTemplate无论就速度,兼容性还是使用人数上,都占绝对优势。这里我将简单地介绍下artTemplate的常见用法。 对于这其中涉及到的语法,我们只需要记住并且会用即可,不需要知道为什么这样用 用法一:使用渲染模板 需要先使用一个type="text/html"的script标签存放模板 1.简单的json数据 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <script type="text/javascript" src="js/template.js" ></script> </head> <body> <div id="container"></div> <script type="text/html" id="div"> <h1>{{name}}</h1> <h2>{{age}}</h2> </script> <script type="text/javascript"> var data = { name:"geekWeb", age:22 } var html = template('div',data); document.getElementById("container").innerHTML =

artTemplate 模板引擎(简洁语法/原生语法)

本秂侑毒 提交于 2019-12-03 05:25:54
1. artTemplate 简洁语法模板 (1)引入插件: < script src = "template.js" ></ script > (2)编写模板: < script id = "test" type = "text/html" > <h1> {{ title }}</ h1 > <ul> {{ each list as value i }} <li> 索引 {{ i + 1 }} :{{ value }}</ li > {{/ each }} </ ul > </ script > (3)渲染数据: var data = { title : '标签' , list : [ '文艺' , '博客' , '摄影' , '电影' , '民谣' , '旅行' , '吉他' ] }; var html = template ( 'test' , data ); document . getElementById ( 'content' ). innerHTML = html ; (4)简洁语法: {{ if admin }} {{ include 'admin_content' }} {{ each list }} <div> {{ $index }}. {{ $value . user }}</ div > {{/ each }} {{/ if }} 2.

artTemplate基本语法

≯℡__Kan透↙ 提交于 2019-12-03 05:24:40
这边是以标准语法来操作的。javascript引擎的实质就是帮我们把带有JavaScript代码的伪THTML语句编译为HTML。 一.artTemplate基本语法结构 (1).表达式 {{ 与 }} 符号包裹起来的语句则为模板的逻辑表达式。 (2).输出表达式 2.1对内容编码输出:{{content}} 2.2不编码输出:{{#content}} 编码可以防止数据中含有 HTML 字符串,避免引起 XSS 攻击。 (3).变量 {{set temp = data.sub.content}} (4).条件表达式 {{if admin}} <p>admin</p> {{else if code > 0}} <p>master</p> {{else}} <p>error!</p> {{/if}} (5).遍历表达式 无论数组或者对象都可以用 each 进行遍历。 {{each list as value index}} <li>{{index}} - {{value.user}}</li> {{/each}} 亦可以被简写: {{each list}} <li>{{$index}} - {{$value.user}}</li> {{/each}} (6).子模板(模板包含表达式) a.用于嵌入子模板: {{include './header.art'}} b.子模板默认共享当前数据

arttemplate.js

╄→尐↘猪︶ㄣ 提交于 2019-12-03 05:24:27
模板引擎有好多种可在github的官网上查找 此处的arttemplate 是js模板引擎的一种,js库的不同,有的里面没helper,有的有, 在用谷歌浏览器f12定位调试时,global里可以去找有没有,没有就得换js库 https:https://aui.github.io/art-template/zh-cn/docs/ 文档地址 或 http://www.sjmoban.com/index.php/doc/index/4(此出比较简单全是案例) art-template 是一个简约、超快的模板引擎。它采用作用域预声明的技术来优化模板渲染 (加工成最后效果的)速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和大多浏览器 特性 拥有接近 JavaScript 渲染极限的的性能 调试友好:语法、运行时错误日志精确到模板所在行;支持在模板文件上打断点(Webpack Loader) 支持 Express、Koa、Webpack 支持模板继承与子模板 浏览器版本仅 6KB 大小 art-template 同时支持两种模板语法。标准语法可以让模板更容易读写;原始语法具有强大的逻辑处理能力。 简单案例 1:渲染变量 <!doctype html> <html> <head> <meta charset="utf-8"> <title>lianxi1

模板引擎artTemplate 介绍

喜欢而已 提交于 2019-12-03 05:23:53
一.介绍 (1).介绍 art-template 是一个简约、超快的模板引擎。artTemplate 是新一代 javascript 模板引擎,它采用预编译方式让性能有了质的飞跃,并且充分利用 javascript 引擎特性,使得其性能无论在前端还是后端都有极其出色的表现。 (2).性能 1.性能卓越,执行速度通常是 Mustache 与 tmpl 的 20 多倍 2.支持运行时调试,可精确定位异常模板所在语句 3.对 NodeJS Express 友好支持 4.安全,默认对输出进行转义、在沙箱中运行编译后的代码(Node版本可以安全执行用户上传的模板) 5.支持include语句 6.可在浏览器端实现按路径加载模板 7.支持预编译,可将模板转换成为非常精简的 js 文件 8.模板语句简洁,无需前缀引用数据,有简洁版本与原生语法版本可选 9.支持所有流行的浏览器 二.模板 (1).模板 artTemplate的库分为两种,一个是template.js,一个是template-native.js,第一个是标准语法(简洁语法版),第二个是原生语法(感觉像JSP)版,两个库的语法是不一样的,大家不要混用,否则会报错的。 标准语法: {{if user}} <h2>{{user.name}}</h2> {{/if}} 原始语法: <% if (user) { %> <h2><%= user