Node.js中使用CommonJs
模块化机制,通过npm
下载的第三方包,我们在项目中引入第三方包都是:let xx = require('第三方包名')
,究竟require
方法加载第三方包的原理机制是什么,今天我们来探讨下。
1、安装art-template
通过npm安装模板引擎(npm: 包管理工具 , 能帮你下载你所需要的包)
npm install art-template 通过npm安装模板引擎包
该命令在哪执行就会把包下载到哪里默认下载到node_ modules中,不能更改的
打开终端,在终端中输入
npm install art-template
2.然后在项目模板导入那些核心模块
var template = require('art-template');
3.再写入案例:
var template = require('art-template');
var text = template.render(`我的名字是{{name}},今年{{age}}岁`, {
name: 'Node',
age: 18,
})
console.log(text)
4.在终端输出
5.实战案例:
//获取模板引擎实例
var template = require('art-template');
//获取文件操作对象实例
var fs = require('fs');
//获取服务器实例
var http = require('http');
//创建服务器,并绑定3000端口
var server = http.createServer().listen(5000, function () {
console.log('Server star ....');
})
//服务器监听方法
server.on('request', function (req, res) {
//获取请求地址
var url = req.url;
if (url === '/') {
//读取当前目录下的'tpl.html'文件
fs.readFile('./index.html', function (err, data) {
if (err) {
//读取失败
return console.log('读取文件失败了')
}
//读取成功后,使用模板引擎替换字段
/**
* 替换规则
* 替换标记:{{}}
* 例如:{{ name }} 替换为下面的 Node
*/
var ret = template.render(data.toString(), {
//对应{{ name }}
name: 'Node',
//对应{{ age }}
age: 18,
//对应{{ province }}
province: '武汉市',
//对应{{each hobbies}} {{ $value }} {{/each}}
//此为数组 each开始循环 /each结束循环
hobbies: [
'写代码',
'打游戏',
'听音乐'
],
//对应{{ title }}
title: '个人信息'
})
res.end(ret);
})
} else {
//其他请求地址
res.end('404');
}
})
index.html中为
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>{{ title }}</title>
</head>
<body>
<p>大家好,我叫:{{ name }}</p>
<p>我今年 {{ age }} 岁了</p>
<h1>我来自 {{ province }}</h1>
<p>
我喜欢:{{each hobbies}}
{{ $value }}
{{/each}}
</p>
<script>
var foo = '{{ title }}'
</script>
</body>
</html>