模板引擎
下载:npm install art-template
可以把我们的 js 里面的变量或者数据放置在外部的页面里面。
底层实现:正则+替换
具体:
1. 我们外置的页面一般我们叫做模板,模板里面一般会放置很多的占位符。占位符值得是后面可以通过变量替换出来的。
2. 使用模板引擎,把那些占位符通过变量替换出来。
标准语法使用:{{ kw }}
形如这样的结构叫做占位符,也可以叫做插值表达式,后面在学习 vuejs的时候,到处都可以看到这个
渲染模板
template(filename, content):根据模板名渲染模板;返回值为渲染后的 html 字符串
参数:
filename 需要渲染的 HTML 模板文件路径,或 HTML 代码段的 id
content 需要渲染的数据,其值为一个对象,用于给模板中的插值表达式传递数据;如果没有需要渲染的数据可以设置为一个空对象 {}
views/search.art文件代码:
<!DOCTYPE html>
<html lang="zh_CN">
<head>
<meta charset="UTF-8">
<title>搜索表单</title>
</head>
<body>
<h1>xxx商城</h1>
<!--// 代表提交当前的url-->
<form action="" method="get">
<input type="text" name="kw">
<input type="submit" value="提交">
</form>
<p>把用户搜索的关键字:<b>{{ kw }}</b></p>
<hr>
<ul>
<li>商品一</li>
<li>商品一</li>
<li>商品一</li>
<li>商品一</li>
<li>商品一</li>
<li>商品一</li>
</ul>
</body>
</html>
app.js代码:
const express = require('express');
const url = require('url');// 专门负责处理url部分
const path = require('path');
var template = require('art-template');
const app = express();
const port = 3000;
app.get('/search', (req, res)=> {
//console.log(req.query); // 第一次没有
let kw = req.query.kw; // 用户输入的查询关键字、
//path.resolve() 方法会把一个路径或路径片段的序列解析为一个绝对路径。
//第一个参数:代表的是模板,模板里面存着很多的占位符
// 第二个参数:给模板传递的数据,是一个对象格式
let absPath = path.resolve(__dirname, './views/search.art');
let templateHtml = template(absPath, {kw});
res.send(templateHtml);
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`))