day04
day04-ppt 模板引擎art-template
模板引擎的基础概念
- 模板引擎是第三方模块。
- 让开发者以更加友好的方式拼接字符串,使项目代码更加清晰、更加易于维护。
art-template
- 在命令行工具中使用 npm install art-template 命令进行下载
- 使用const template = require(‘art-template’)引入模板引擎
- 告诉模板引擎要拼接的数据和模板在哪 const html = template(‘模板路径’, 数据);
- 使用模板语法告诉模板引擎,模板与数据应该如何进行拼接
art-template代码示例
- 见PPT
模板引擎的语法
模板语法
- art-template同时支持两种模板语法:标准语法和原始语法。
- 标准语法可以让模板更容易读写,原始语法具有强大的逻辑处理能力。
- 标准语法: {{ 数据 }}
- 原始语法:<%=数据 %>
输出
- 将某项数据输出在模板中,标准语法和原始语法如下:
- 例子见PPT
原文输出
- 如果数据中携带HTML标签,默认模板引擎不会解析标签,会将其转义后输出。
- 标准语法:{{@ 数据 }}
- 原始语法:<%-数据 %>
条件判断
- 见PPT
循环
- 标准语法:{{each 数据}} {{/each}}
- 原始语法:<% for() { %> <% } %>
- 例子 见PPT
子模板
- 使用子模板可以将网站公共区块(头部、底部)抽离到单独的文件中。
- 标准语法:{{include ‘模板’}}
- 原始语法:<%include(‘模板’) %>
- 例子见PPT
模板继承
- 使用模板继承可以将网站HTML骨架抽离到单独的文件中,其他页面模板可以继承骨架文件。
模板继承示例
- 见PPT
模板配置
- 向模板中导入变量 template.defaults.imports.变量名 = 变量值;
- 设置模板根目录 template.defaults.root = 模板目录
- 设置模板默认后缀 template.defaults.extname = ‘.art’
day04-code
template
- 01.js 01.art
- 模板的基本引用
- art模板 输出 原文输出演示
const template = require('art-template');
const path = require('path');
const views = path.join(__dirname, 'views', '01.art');
const html = template(views, {
name: '张三',
age: 20,
content: '<h1>我是标题</h1>'
})
console.log(html);
<body>
<!-- 标准语法 -->
<p>{{ name }}</p>
<p>{{ 1 + 1 }}</p>
<p>{{ 1 + 1 == 2 ? '相等' : '不相等' }}</p>
<p>{{ content }}</p>
<p>{{@ content }}</p>
<!-- 原始语法 -->
<p><%= name %></p>
<p><%= 1 + 2%></p>
<p><%= 1 + 1 == 2 ? '相等' : '不相等' %></p>
<p><%= content%></p>
<p><%- content%></p>
</body>
- 02.js 02.art
- 模板的基本引用
- art模板 条件判断
{{if age > 18}}
年龄大于18
{{else if age < 15 }}
年龄小于15
{{else}}
年龄不符合要求
{{/if}}
<% if (age > 18) { %>
年龄大于18
<% } else if (age < 15) { %>
年龄小于15
<% } else { %>
年龄不符合要求
<% } %>
- 03.js 03.art
- 模板的基本引用
- art模板 for循环
<ul>
{{each users}}
<li>
{{$value.name}}
{{$value.age}}
{{$value.sex}}
</li>
{{/each}}
</ul>
<ul>
<% for (var i = 0; i < users.length; i++) { %>
<li>
<%=users[i].name %>
<%=users[i].age %>
<%=users[i].sex %>
</li>
<% } %>
</ul>
- 04.js 04.art
- 模板的基本引用
- art模板 子模板
{{ include './common/header.art' }}
<% include('./common/header.art') %>
<div> {{ msg }} </div>
{{ include './common/footer.art' }}
<% include('./common/footer.art') %>
- 05.js 05.art layout.art
- 模板的基本引用
- art模板 模板继承
{{extend './common/layout.art'}}
{{block 'content'}}
<p>{{ msg }}</p>
{{/block}}
{{block 'link'}}
<link rel="stylesheet" type="text/css" href="./main.css">
{{/block}}
- 06.js 06.art
- 模板配置
- art模板 时间格式
{{ dateFormat(time, 'yyyy-mm-dd')}}
student
- app.js
- 模板引擎 网站服务器的基本配置
- 学生信息表案例
// 引入http模块
const http = require('http');
// 引入模板引擎
const template = require('art-template');
// 引入path模块
const path = require('path');
// 引入静态资源访问模块
const serveStatic = require('serve-static');
// 引入处理日期的第三方模块
const dateformat = require('dateformat');
const router = require('./route/index');
// 实现静态资源访问服务
const serve = serveStatic(path.join(__dirname, 'public'))
// 配置模板的根目录
template.defaults.root = path.join(__dirname, 'views');
// 处理日期格式的方法
template.defaults.imports.dateformat = dateformat;
// 数据库连接
require('./model/connect');
// 创建网站服务器
const app = http.createServer();
// 当客户端访问服务器端的时候
app.on('request', (req, res) => {
// 启用路由功能
router(req, res, () => {})
// 启用静态资源访问服务功能
serve(req, res, () => {})
});
// 端口监听
app.listen(80);
console.log('服务器启动成功');