在express中要向静态网页渲染动态的数据就需要使用模板引擎,一般的模板引擎没有art-template快速所以选择它
安装
NPM安装
- npm install —save art-template
- npm install —save express-art-template
<script src="lib/template-web.js"></script><script id="tpl-user" type="text/html">{{if user}}<h2>{{user.name}}</h2>{{/if}}</script>
配置
const express = require('express');const app = express();// view engine setupapp.engine('html', require('express-art-template'));//app.engine('art', require('express-art-template'));app.set('view', {debug: process.env.NODE_ENV !== 'production'});app.set('views', path.join(__dirname, 'views'));app.set('view engine', 'art');// routesapp.get('/', function (req, res) {res.render('index.art', {user: {name: 'aui',tags: ['art', 'template', 'nodejs']}});});
使用
mustache语法用法
<!DOCTYPE html><!-- Created By HelloChen 2020.09.08-21:00:45 --><html lang="zh-CN"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style></style></head><body><h1>{{data.name}}</h1><script></script></body></html>
原生用法(兼容其他模板引擎)
<%= value %><%= data.key %><%= data['key'] %><%= a ? b : c %><%= a || b %><%= a + b %>
语法
原文输出
{{@ value }}
条件
{{if value}} ... {{/if}}{{if v1}} ... {{else if v2}} ... {{/if}}
循环
{{each target}}{{$index}} {{$value}}{{/each}}
变量
{{set temp = data.sub.content}}
模板继承
{{extend './layout.art'}}{{block 'head'}} ... {{/block}}
子模板
{{include './header.art'}}{{include './header.art' data}}
过滤器
template.defaults.imports.dateFormat = function(date, format){/*[code..]*/};template.defaults.imports.timestamp = function(value){return value * 1000};
{{date | timestamp | dateFormat 'yyyy-MM-dd hh:mm:ss'}}
