好 从本文开始 我们就来手写一下mustache这个库
他是模板引擎的一个祖先
将模板字符串编译成一个dom字符串 就是它的思想,这也是一个具有跨时代意义的思想
这里的话 我们还是搭一个 webpack 的项目环境
这里值得一提的是 mustache 他官方是通过rollup来进行打包的 很多第三方库其实都是用rollup打包
首先对比rollup webpack肯定就能提供更好的开发体验,因为他能创造出一个热更新环境
会被node的控制台更好用
rollup的话 更擅长的时 将多个js文件打包到一起 但是 它本身没什么开发体验 或者是 体验并不好
然后 我们在本地创建一个文件夹 叫 mustacheDom
然后用编辑器打开这个目录
然后 在终端执行
npm init
然后全部按回车
这样 我们就创建了一个项目
然后 我们引入一下webpack 在终端执行
npm i -D webpack@5 webpack-cli@3 webpack-dev-server@3
这样 我们的依赖包就进来了
然后 我们在项目根目录下创建一个文件 叫 webpack.config.js
用来配置我们webpack的运行信息和模式
然后 webpack.config.js 参考代码如下
//通过node获取到当前文件的位置
const path = require('path')
module.exports = {
//设置当前入口文件
entry: './src/index.js',
//出口配置
output: {
//设置打包后文件的名字
filename: 'bundle.js',
//设置虚拟打包 文件并不会真正打包到项目中 而是出现在指定端口上
publicPath: 'xuni'
},
devServer: {
port: 8080,
contentBase: 'www'
}
}
这个配置是webpack一个比较基本的案例 然后 他上面指定 入口文件是 同目录下的 src下的 index.js
所以 这个文件我们需要创建一下
这里 我们创建文件之后 编写了 输出一个文本 用来验证环境已经启动成功
但是 我们 contentBase 指向的是一个 www 文件夹 热服务会运行这个文件夹下的index.html
然后 我们也将这个目录文件创建出来
www下的 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>
<script src = "/xuni/bundle.js"></script>
</body>
</html>
这里 我们根据 webpack.config.js 配置 引入了他这个运行后会生成在虚拟路径下的xuni/bundle.js
然后 我们看到项目中的 package.json
打开它 在内容中找到 scripts
给他加一条启动命令
"serve": "webpack-dev-server"
webpack-dev-server用于启动webpack的运行环境
然后 我们直接在终端执行
npm run serve
然后 服务就起来了 控制台会将端口号给我们
我们通过端口号 在浏览器中访问服务
显然没有任何问题
好这样 我们webpack的一个环境就起来了