javascript模板引擎:art-template文档笔记

从零开始:跟着 Art-template 学习前端模板引擎 Art-template 是一款基于 JavaScript 的快速、简单且功能丰富的模板引擎。在 HTML 文件中使用标签定义模板,或者将模板存储在外部文件中,并通过标签引入。 阅读详情

基本按照手册,过了一遍,当自己熟悉下:

1.github地址:
	https://github.com/aui/art-template
2.引入文件:
	lib/template-web.js
	兼容IE8,还需要引入example/web-ie-compatible/*.js
3.语法:
	支持2种:标准语法 和 原始语法
	标准语法:支持基本模板语法以及基本javascript表达式
	原始语法:支持任意javascript语法,这和EJS一样
	1>输出:
		标准语法
			{{value}}
			{{data.key}}
			{{data['key']}}
			{{a || b}}
			{{a + b}}
		原始语法
			<%= value %>
			<%= data.key %>
			<%= data['key'] %>
			<%= a || b %>
			<%= a + b %>
		模板一级特殊变量可以使用 '$data' + '下标' 进行访问:
			{{$data['user list']}}
	2>原文输出 - 不会对HTML内容进行转义
		标准语法
			{{@value}}
		原始语法
			<%- value %>
	3>条件
		标准语法
			{{if value}}
				...
			{{/if}}
			{{if v1}}
				...
			{{else if v2}}
				...
			{{/if}}
		原始语法
			<% if (value) { %>
				...
			<% } %>
			<% if (v1) { %>
				...
			<% } else if (v2) { %>
				...
			<% } %>
	4>循环
		标准语法
			{{each target}}
				{{$index}} {{$value}}
			{{/each}}
		原始语法
			<% for(var i = 0; i < target.length; i++){ %>
				<%= i %> <%= target[i] %>
			<% } %>
		注意:
			1.target 支持 'array' 和 'object',默认值为 '$data'
			2.$value 和 $index 可以自定义:{{each target val key}}
	5>变量
		标准语法
			{{set temp = data.sub.content}}
		原始语法
			<% var temp = data.sub.content; %>
	6>模板继承
		标准语法
			{{extend './layout.art'}}
			{{block 'head'}}
				....
			{{/block}}
		原始语法
			<% extend('./layout.art') %>
			<% block('head', function(){ %>
			<% }) %>
		模板继承允许构建一个包含 'layout' 布局模板
			<!--layout.art-->
			<!doctype html>
			<html>
			<head>
			    <meta charset="utf-8">
			    <title>{{block 'title'}}My Site{{/block}}</title>
			    {{block 'head'}}
			    <link rel="stylesheet" href="main.css">
			    {{/block}}
			</head>
			<body>
			    {{block 'content'}}{{/block}}
			</body>
			</html>
		继承 'layout'
			<!--index.art-->
			{{extend './layout.art'}}
			{{block 'title'}}{{title}}{{/block}}
			{{block 'head'}}
			    <link rel="stylesheet" href="custom.css">
			{{/block}}
			{{block 'content'}}
			<p>This is just an awesome page.</p>
			{{/block}}
	7>子模板
		标准语法
			{{include './header.art'}}
			{{include './header.art' data}}
		原始语法	
			<% include('./header.art') %>
			<% include('./header.art', data) %>
		注意:
			1.data 默认值为 $data;标准语法不支持声明 'array' 和 'object',只支持引用变量,而原始语法不受限制
			2.art-template 内建 HTML 压缩器,避免书写 HTML 非正常闭合的子模板,否则开启压缩后可能出现混乱!
	8>过滤器
		注册过滤器 - 函数第一个参数接受目标值
			template.defaults.imports.dateFormat = function(data, format){};
			template.defaults.imports.timeFormat = function(value){return value * 1000};
		标准语法
			{{date | timestamp | dateFormat 'Y-m-d H:i:s'}}
		原始语法
			<%= $imports.dateFormat($import.timestamp(date), 'Y-m-d H:i:s')  %>
4.重要选项:
	1>调试
		template.defaults.debug
			art-template 内建调试器,能够捕获到语法与运行错误,并且支持自定义的语法。在 NodeJS 中调试模式会根据环境变量自动开启:process.env.NODE_ENV !== 'production'
			设置 template.defaults.debug = true,等同于:
				{
					cache: false,
					minimize: false,
					compileDebug: true	
				}
	2>模板变量
		template.defaults.imports
			模板通过 $imports 可以访问到模板外部的全局变量与导入的变量
		导入变量
			template.defaults.imports.log = console.log;
			<% $imports.log('hello world') %>
		内置变量
			$data - 传入模板的数据
			$imports - 外部导入的变量以及全局变量
			print - 字符串输出函数
			include - 子模板载入函数
			extend - 模板继承函数
			block - 模板 '块声明' 函数
	3>解析规则
		template.defaults.rules
		修改2种模板语法定界符:
			原始语法 - 默认规则(源码)
				template.defaults.rules[0].test = /<%(#?)((?:==|=#|[=-])?)[ \t]*([\w\W]*?)[ \t]*(-?)%>/;
			标准语法 - 默认规则(源码)
				template.defaults.rules[1].test = /{{([@#]?)[ \t]*(\/?)([\w\W]*?)[ \t]*}}/;
			就是一个正则表达式,我们只需要修改 '定界符' 正则:
				var rule = template.defaults.rules[0];
				rule.test = new RegExp(rule.test.source.replace('<%', '<\\\?').replace('%>', '\\\?>'));
		添加语法:
			让模板引擎支持 ES6 ${name} 模板字符串的解析:
				template.defaults.rules.push({
				    test: /\${([\w\W]*?)}/,
				    use: function(match, code) {
				        return {
				            code: code,
				            output: 'escape'
				        }
				    }
				});
			其中 'test' 是匹配字符串正则,'use' 是匹配后的调用函数
			use函数:
	4>压缩页面
		template.defaults.minimize
		art-template 内建的压缩器可以压缩 HTML、JS、CSS,它在编译阶段运行,因此完全不影响渲染速度,并且能够加快网络传输
		开启:
			template.defaults.minimize = true;		// 启用
		配置:
			参考:template.defaults.minimize = true;
			默认配置:
				template.defaults.htmlMinifierOptions = {
				    collapseWhitespace: true,
				    minifyCSS: true,
				    minifyJS: true,
				    // 运行时自动合并:rules.map(rule => rule.test)
				    ignoreCustomFragments: []
				};
5.全部选项
	// 模板名
	filename: null,

	// 模板语法规则列表
	rules: [nativeRule, artRule],

	// 是否开启对模板输出语句自动编码功能。false - 关闭编码输出功能
	// escape 可以防范 XSS 攻击
	excape: true,

	// 启动模板引擎调试模式。如果为 true: {cache:false, minimize:false, compileDebug:true}
	debug: detectNode ? process.env.NODE_ENV !== 'production' : false,

	// bail 如果为true,编译错误与运行时错误都会抛出异常
	bail: true,

	// 是否开启缓存
	cache: true,

	// 是否开启压缩。它会运行 htmlMinifier,将页面 HTML、CSS、CSS 进行压缩输出
	// 如果模板包含没有闭合的 HTML 标签,请不要打开 minimize,否则可能被 htmlMinifier 修复或过滤
	minimize: true,

	// 是否编译调试版
	compileDebug: false,

	// 模板路径转换器
	resolveFilename: resolveFilename,

	// 子模板编译支配器
	include: include,

	// HTML 压缩器。仅在 NodeJS 环境下有小
	htmlMinifier: htmlMinifier,

	// HTML压缩器配置。参见 https://github.com/kangax/html-minifier
	htmlMinifierOptions: {
	    collapseWhitespace: true,
	    minifyCSS: true,
	    minifyJS: true,
	    // 运行时自动合并:rules.map(rule => rule.test)
	    ignoreCustomFragments: []
	},

	// 错误事件。仅在 bail 为 false 时生效
	onerror: onerror,

	// 模板文件加载器
	loader: loader,

	// 缓存中心适配器(依赖 filename 字段)
	caches: caches,

	// 模板根目录。如果 filename 字段不是本地路径,则在 root 查找模板
	root: '/',

	// 默认后缀名。如果没有后缀名,则会自动添加 extname
	extname: '.art',

	// 忽略的变量。被模板编译器忽略的模板变量列表
	ignore: [],

	// 导入的模板变量
	imports: runtime,

6.API:
	template(filename, content)
	.compile() - 编译模板源代码,并返回一个渲染函数(类似,定义了一个 '模板',使用时,传入数据,直接渲染即可!)
	.render() - 编译模板字符串,并渲染
	.defaults() - 修改默认配置
	.extension() - 扩展,仅 NodeJS 使用

7.使用:
	我们一般使用,就是引入js,然后要么渲染模板,要么渲染模板字符串,所用到的核心方法:

	// 基于模板名渲染模板
	template(filename, data)

	// 将模板源代码编译成函数并立刻执行
	template.render(source, data, options);

	// 将模板源代码编译成函数
	template.compile(source, options);


art-template-模板引擎篇 1. 概述 art-template的GitHub仓库:https://github.com art-template的官方文档:https://github.com/aui/art-template art-template 主要用于客户端 art-template 模板引擎不仅可以在浏览器使用,也可以在node中使用 模板引擎最早诞生于服务器领域,后来才发展到前端 art-template 模板引擎,属于第三方模块 2. art-template 的安装 安装命令:npm install art- 阅读详情

相关推荐

Ajax 使用模板引擎(art-template)对响应数据进行渲染

art-template模板引擎参考手册:https://aui.github.io/art-template/zh-cn/docs/index.html 案例: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>AJAX 动态表格...

夏沐的博客 2041

Art-template---中文文档[详细篇]

art-template 支持标准语法与原始语法。

厚积薄发. 2306

Node.js-art-template 模板的安装与使用

JS 中 art-template 模板的简单使用 在需要使用模板的目录下安装 art-template 模板 npm install art-template 引入模板文件 <script type="text/javascript" src = "node_modules/art-template/lib/template-web.js"></scri...

weixin_44486539的博客 1528

art-template简单使用

目录学习源art-Templateart-Template特点art-Template与其他模板引擎运行速度对比art-Template文档安装安装方法在浏览器中编译语法输出原文输出条件输出循环输出定义变量模板继承子模板调试模板变量 学习源 https://www.jianshu.com/p/d8d8e19157e0 https://www.jianshu.com/p/955ff311d670 ...

爱喝水的qdy的博客 955

Ubuntu18.04 SoftRoCE安装教程

目标:创建两台Ubuntu18.04虚拟机,安装SoftRoCE环境,一台作为Server,一台作为Client,模拟RDMA通信环境,熟悉RDMA的通信方式。

GGGYL111的博客 1549

STM32HAL库硬件I2C驱动INA226避坑指南:从寄存器配置到电流测量实战

本文详细解析了使用STM32的HAL库硬件I2C驱动INA226电流/功率监测芯片的完整流程与常见陷阱。内容涵盖从硬件I2C配置、寄存器(特别是配置与校准寄存器)的深度解析、健壮的驱动函数封装,到实战中的校准技巧与滤波优化,旨在帮助开发者避开通信失败、数据不准等典型问题,实现高精度电流测量。

x1y2z的博客 791

前端node生成word文件调研记录(art-template,officegen,docxtemplater)

node 生成word ,调研的技术有3种,下面分别说明优缺点:应用场景:根据模板生成word文件,需要有页眉页脚,最好可以像模块一样,导入多个文件,生成一个文件。

gujian_peachblossom的博客 2367

Ubuntu桌面消失?可能是lightdm配置在捣鬼:详细解析/etc/lightdm.conf的优先级机制与实战修复

本文详细解析了Ubuntu系统因lightdm显示管理器配置错误导致桌面消失的问题。通过分析/etc/lightdm.conf的优先级加载机制,提供了从systemctl诊断、调试模式运行到实战修复配置语法错误(如缺失[Seat:*]组)的完整方案。文章还探讨了在系统无法启动时使用chroot或恢复模式进行高级救援,并对比了lightdm与gdm3在NVIDIA驱动环境下的不同表现,帮助用户高效恢复图形界面。

weixin_29313547的博客 420

art-template模板引擎

介绍了art-template模板引擎的概念与语法

凉茶铺的博客 4047

华为AR3260路由器NAT回流配置实战:从WEB界面到命令行的完整避坑指南

本文详细解析了华为AR3260路由器NAT回流(Hairpin NAT)的配置原理与实战方法。针对内网用户无法通过公网地址访问内部服务器的常见问题,文章不仅剖析了WEB界面配置的常见报错原因,更提供了清晰、可靠且一劳永逸的命令行(CLI)配置方案与排错指南,帮助企业网络工程师彻底解决内外网访问不一致的难题。

u6v7w8x的博客 874

从零到一:i.MX8M Plus开发板全流程开发指南(源码编译、烧录、镜像运行)

本文详细介绍了i.MX8M Plus开发板的全流程开发指南,包括源码编译、烧录和镜像运行等关键步骤。通过实战案例和配置技巧,帮助开发者快速掌握工业级应用开发,提升在边缘计算和AI推理等领域的开发效率。

weixin_30687051的博客 571

模板引擎简介和art-template模板引擎基本使用

一、模板引擎概念 模板引擎(这里特指用于Web开发的模板引擎)是为了使用户界面与业务数据(内容)分离而产生的,它可以生成特定格式的文档,用于网站的模板引擎就会生成一个标准的HTML文档。 模板引擎不属于特定技术领域,它是跨领域跨平台的概念。在Asp下有模板引擎,在PHP下也有模板引擎,在C#下也有,甚至JavaScript、WinForm开发都会用到模板引擎技术。 二、模板引擎原理 模板引擎的实现...

kiku 2052

PrimeTime low power-多电压设计流程(2)

get_power_switches`、`get_supply_nets` 和 `get_supply_ports` 命令的操作方式类似,并具有类似的命令选项。PrimeTime 根据 UPF 命令构建电源供应网络,包括 create_power_domain、create_supply_net、create_supply_set、create_supply_port、set_domain_supply_net 和 connect_supply_net。电源集句柄是为电源域隐式创建的一个抽象电源集。

QRBQ 712

必须掌握的前端模板引擎之art-template

常用的模板引擎有tpl.js、baiduTemplate、doT.js、art-template等等; 我所理解的模板引擎就是把js数据传到html中展示出来; art-template 是一个简约、超快的模板引擎。 art-template有两种语法: 一、标准语法可以让模板更容易读写; 二、原始语法具有强大的逻辑处理能力。   引入模板 &lt;script src="js...

codergzh 1万+

vue3:最新实现腾讯人脸核身+增强版人脸核身使用方法及示例源码,Vue3如何使用腾讯云慧眼人脸核身,提供人脸核身案例、身份信息核验、活体检测与核身比对等示例代码(后端spring与thinkphp)

vue3接入腾讯人脸核身,腾讯云人脸核身Vue3+后端代码,H5人脸核身,vue3 H5如何使用腾讯人脸核身sdk,vue3+thinkphp腾讯人脸核身,Spring Boot接入腾讯云人脸核身教程,hinkphp腾讯人脸核身,vue3人脸核身插件接入流程,vue+spring boot实现腾讯人脸核身,vue3接入腾讯云【增强版人脸核身接入】,vue3 h5微信公众号网页腾讯云慧眼人脸核身,tvue3接入人脸核身SDK,vue3+typescrip+vite接入慧眼实名认证,vue3腾讯云活体人脸核身(

✅ 精选推荐文章 4119

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【jquery Ajax 】art-template(ejs)模板引擎的概念与使用

模板引擎,顾名思义,它可以根据程序员指定的模板结构和数据,自动生成一个完整的HTML界面。art-template是一个简约,超快的模板引擎,中文官网首页为首页art-template提供了{{}}这种语法格式,在大括号中可以进行变量输出,或循环数组等操作,这种语法在art-template中被称为标准语法。

m0_62360527的博客 1556

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

模板引擎(art-template)详解

art-template🧨1. 介绍1.1.特性1.2. 模板1.3.渲染模板1.4.核心方法🧨2.安装2.1.npm2.2.在浏览器中实时编译🧨3. 语法3.1.输出3.2.原文输出3.3.条件3.4.循环3.5.变量3.6.模板继承3.7.子模板3.8.过滤器4.调试5.模板变量6. 解析规则7.压缩页面8.API8.1.template(filename, content)8.2. .compile(source, options)8.3. .render(source, data, option

m0_61016904的博客 2万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

一篇文章让你了解什么是art-template模板引擎

目录1、模板引擎1.1 以前的项目存在的问题1.2 模板引擎的作用1.3 模板引擎渲染 1、模板引擎 art-template是由腾讯出品的一款比较流行的模板引擎,易上手 art-template官网 atr-template文档 1.1 以前的项目存在的问题 数据和HTML标字符串拼接导致,代码混乱,拼接容易出错,不易维护 业务逻辑和数据界面混合,代码容易出错 且字符串拼接中 不能换行 要是换行的话 需要 ‘\’ 来转义字符 for(var i = 0; i<res.length;i++

小hu同学 5769

art-template模板、语法,以及express-art-template模板引擎

一、什么是art-template art-template 是一个简约、超快的模板引擎。 它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能,并且同时支持 NodeJS 和浏览器。 art-template 的特性: 1.拥有接近 JavaScript 渲染极限的的性能 2.调试友好:语法、运行时错误日志精确到模板所在行;支持在模板文件上打3.断点(Webpack Loader) 4.支持 Express、Koa、Webpack 5.支持模板继承与子模板 6.浏

m0_63374484的博客 7566

一则文章学通模板引擎——art-template

了解模板引擎使用art-template模板引擎首先我们应该下载上JS文件并且引入到我们的HTML页面中 定义我们需要渲染的数据定义模板调用函数方法art-template文档链接完成一个小案例art-template标准常用语法标准语法——输出标准语法——原文输出标准语法——条件输出标准语法——循环输出标准语法——过滤器总结案例

世界和我们都不该止步于此 1896

怎样在webpack中使用 art-template 模板引擎, art-template详解

简介 art-template是一个简约、执行速度超快的模板引擎。它采用作用域声明的技术来优化模板渲染速度,从而获得接近 Javascript 极限的运行性能,并且同时支持 NodeJs和浏览器。使用art-template 便于代码的维护,以前我们渲染数据是以字符串模板的形式在 js 文件中写入的 html 内容,如果 html内容需要修改,我们需要在 js 中修改。而用了模板引擎后,我们只需要...

蒲公英芽的博客 2439

js模板引擎_10个最佳开源JavaScript模板引擎

背景目前前端主流的开发框架有Vue、React以及Angular等,但是依然有一部分开发人员并不会去使用这些框架,特别是一些偏向后端的开发者,可能依然在使用类似于jquery+Bootstrap的方式在开发一些项目,而且有些项目可能传统的方式更加合适,因此JavaScript前端模板引擎就能够发会很大作用了,那么今天就介绍10大开源模板引擎,依据不同的场景或者功能特性,可以选择不同的模板引擎应用到...

weixin_39588542的博客 7169

06-node.js中第三方模块npm安装教程以模板引擎(art-template)为例子以及模板引擎(art-template)实例

这是我学习node的整理笔记。是我对各个视频和文档的综合理解,以备我日后复习存储。如果有错误的地方,还请各位大佬多多赐教 模板引擎(art-template)使用以及实例一、安装一、node.js中的模板引擎(art-template)实例1、第三方模块(art-template)引入2、开始写代码 一、安装 art-template是一个简单且超快速的模板引擎,可通过范围内预先声明的技术优化模板渲染速度,从而实现接近JavaScript极限的运行时性能。同时,它同时支持NodeJS和浏览器。在线速度.

君莫笑 1100

art-template踩坑

art-template使用笔记 art-template 是前端的一个高性能 JavaScript 模板引擎,它采用作用域预声明的技术来优化模板渲染速度,从而获得接近 JavaScript 极限的运行性能。 通过下面一张图可以大致了解下 art-template 与其他方式渲染HTML页面的性能比较: 具体跟 Vue、React 这些前端主流框架比较的性能,官方并未给出数据,但是我认为只比较页...

ruisenLi的博客 7464
上一篇: ajax跨域,以及在laravel中实现跨域
下一篇: ajax跨域的响应头
beyond__devil
博客等级 码龄14年 147粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值