多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
## 一、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(/&quot;/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'] } }); }); ~~~