## 一、EJS模板引擎
官网介绍:http://www.embeddedjs.com/
文章介绍:https://segmentfault.com/a/1190000004286562
安装1
~~~
express -e demo // 使用express创建项目-e表示使用ejs模板引擎
~~~
安装2
~~~
npm install ejs
~~~
常用标签:
* <% %>流程控制标签
* <%= %>输出标签(原文输出HTML标签)
* <%- %>输出标签(HTML会被浏览器解析)
* <%# %>注释标签
* % 对标记进行转义
* -%>结束标签用于换行移除模式
* <%=: users | last | capitalize %> 模板变量filter
助手函数:
* first,返回数组的第一个元素;
* last,返回数组的最后一个元素;
* capitalize,返回首字母大写的字符串;
* downcase,返回字符串的小写;
* upcase,返回字符串的大写;
* sort,排序(Object.create(obj).sort()?);
* sort_by:'prop',按照指定的prop属性进行升序排序;
* size,返回长度,即length属性,不一定非是数组才行;
* plus:n,加上n,将转化为Number进行运算;
* minus:n,减去n,将转化为Number进行运算;
* times:n,乘以n,将转化为Number进行运算;
* divided_by:n,除以n,将转化为Number进行运算;
* join:'val',将数组用'val'最为分隔符,进行合并成一个字符串;
* truncate:n,截取前n个字符,超过长度时,将返回一个副本
* truncate_words:n,取得字符串中的前n个word,word以空格进行分割;
* replace:pattern,substitution,字符串替换,substitution不提供将删除匹配的子串;
* prepend:val,如果操作数为数组,则进行合并;为字符串则添加val在前面;
* append:val,如果操作数为数组,则进行合并;为字符串则添加val在后面;
* map:'prop',返回对象数组中属性为prop的值组成的数组;
* reverse,翻转数组或字符串;
* get:'prop',取得属性为'prop'的值;
* json,转化为json格式字符串
成员函数:
* ejs.compile(str, options); 将返回内部解析好的Function函数
* ejs.render(str, options); 返回经过解析的字符串
修改模板后缀为.html:
~~~
app.set('views', path.join(__dirname, 'views')); // 视图目录
app.engine('.html', require('ejs').__express); // 定义模板引擎
app.set('view engine', 'html'); // 使用模板引擎
~~~
在script里使用模板变量,**需要在html里引入ejs.js**
方式一:
~~~
var p = '<%- JSON.stringify({name: "tom"}) %>'; JSON.parse(ejs.render(p, {}));
// {name: "tom"}
~~~
![](https://box.kancloud.cn/e67128de69c8725577e4d995525e66c1_848x94.jpg)
方式二:
~~~
var template = '<%=: data | json %>'; ejs.render(template, {"data": [{"name": "tom"}]}).replace(/"/g, '');
// "[{name:tom}]"
~~~
![](https://box.kancloud.cn/6af092b510db275e1ee674ef79c9dde9_821x55.jpg)
## 二、artTemplte模板 引擎
官方文档:http://aui.github.io/art-template/zh-cn/docs/
> 原始语法兼容 EJS、Underscore、LoDash 模板。
**以下仅以koa框架为例**
安装(--save表示下载模块保存到package.json文件里)
~~~
npm install --save art-template
npm install --save koa-art-template
~~~
**注意:node版本是向前兼容的,async await语法需要8.x才支持,所以可以先下载个8.x的node**
使用
~~~
var app = require('koa')();
var path = require('path');
var render = require('koa-art-template');
// 设置模板目录、模板文件扩展名,及调试
render(app, {
root: path.join(__dirname, 'views'),
extname: '.html',
debug: process.env.NODE_DEV !== 'production'
});
// 渲染模板
app.use(function *(next) {
this.render('index');
});
~~~
在路由中使用
~~~
var router = require('koa-router')();
// 这里的*号加不加都行
router.get('/', function *(next) {
this.render('index', {
title: 'Hello World Koa!'
});
});
~~~
**针对express框架**
安装
~~~
npm install --save art-template
npm install --save express-art-template
~~~
使用
~~~
var express = require('express');
var app = express();
app.engine('art', require('express-art-template'));
app.set('view options', {
debug: process.env.NODE_ENV !== 'production'
});
app.get('/', function (req, res) {
res.render('index.art', {
user: {
name: 'aui',
tags: ['art', 'template', 'nodejs']
}
});
});
~~~