准备HTML模板文件index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<h1>电影祥情</h1>
<hr>
<h2>名称:{{name}}</h2>
<hr>
<h2>导演:{{author}}</h2>
<hr>
<h2>简介:</h2>
<p>{{brief}}</p>
</body>
</html>
创建服务器server.js 文件
let http = require('http');
let fs = require('fs');
const MockDataBase = {
getMovie : function(){
let movie = {
name:'黑暗正义联盟:天启星战争',
brief:'正义联盟集结地球上所有超级英雄一起对抗强大的反派达克赛德。',
author:'马特·皮特斯 Matt Peters'
};
return movie;
}
}
function defaultTemplateEngine(path,model){
console.log('执行模板引擎,渲染数据。')
fs.readFile(path,{encoding:"utf-8",flag:"r"},(err,data)=>{
if(err){
this.end(err);
}else{
let reg = /\{\{(.*?)\}\}/igs
let result;
while(result = reg.exec(data)){
let strKey = result[1].trim()
let strValue = model[strKey]
data = data.replace(result[0],strValue)
}
this.end(data);
}
})
}
function templateEngineFilter(req,res){
if(req.url == '/'){
console.log('执行模板引擎过滤器,向响应对象追加一个模板渲染引擎函数')
res.render = defaultTemplateEngine;
}
}
let server = http.createServer();
server.on('request',async function(req,res){
console.log('收到请求:' + req.url);
templateEngineFilter(req,res);
res.setHeader('Content-Type','text/html;charset=utf-8')
if(req.url=='/'){
let movie = await MockDataBase.getMovie();
res.render('./index.html',movie)
}else{
res.end('404!资源不存在。')
}
})
server.listen(80,function(){
console.log('服务启动成功。')
})
运行命令,启动服务
node server.js