在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 setup
app.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');
// routes
app.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'}}