开发工具: Visual Studio Code
1.创建Node应用程序目录,并进入该目录,右键单击,在弹出的菜单中选择通过Code打开
2.按快捷键Ctrl+`(反引号)
打开终端(Terminal)
,然后输入命令
npm init -y
-y
参数表示项目使用默认的配置参数。
3.安装Webpack开发包,输入命令
npm install webpack webpack-cli --save-dev
其中webpack-cli
表示webpack
的命令行工具,另外使用参数--save-dev
表示该安装包为调试开发时的依赖项,信息记录到package.json
文件中的devDependencies
子项中,后期项目发布时不需要这些安装包。
4.在根目录下新建index.html
,在空白页面最开始处输入字符!
,然后会激活并弹出一个快捷输入方式,选中!
选项直接回车,代码会自动生成。
5.在根目录下新建src
子目录,在该子目录下新建index.js
,输入如下代码
document.write('Hello Node');
6.修改index.html
,引用index.js
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello</title>
</head>
<body>
<script src="./src/index.js"></script>
</body>
</html>
7.更新package.json
{
"name": "vueprojects",
"version": "1.0.0",
"private": "true",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"keywords": [],
"author": "",
"license": "ISC",
"devDependencies": {
"webpack": "^5.67.0",
"webpack-cli": "^4.9.2"
}
}
添加private参数,确保我们的安装包是私有的;同时移除main入口,防止意外发布应用代码。
到此,就可以简单的测试一下该Node应用了,在浏览器中打开index.html
。
8.创建分发(dist)目录结构,在根目录新建dist
目录,将index.html
移入其中.安装Lodash
npm i --save lodash
修改index.js
import _ from "lodash";
function divComp() {
let eleDiv = document.createElement('div');
eleDiv.innerHTML = _.join(['Hello', 'Webpack', '!'], ' ');
return eleDiv;
}
document.body.appendChild(divComp());
修改index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello</title>
</head>
<body>
<script src="main.js"></script>
</body>
</html>
9.通过Webpack打包Node应用
npx webpack
npx
命令是从NPM5.2+版本开始提供的命令,可以自动执行npm包内的二进制安装文件。
通过Webpack打包后自动生成main.js
(bundle包文件,一个经过代码压缩的打包文件,提高运行速度)。至于后面的警告信息先不用理会,后面会通过相关配置消除该警告信息。
此时可以再次测试这个Node应用,在浏览器中打开index.html
。
10.使用Webpack配置文件,在根目录下新建webpack.config.js
,输入代码
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
mode: 'development'
}
通过mode参数配置打包模式(development表示开发模式,该模式会对脚本代码进行压缩)。
11.重新配置package.json
配置文件,在scripts
节点下添加一个build
参数
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack"
},
12.再次修改index.js
和index.html
import _ from "lodash";
function divComp() {
let eleDiv = document.createElement('div');
eleDiv.innerHTML = _.join(['Hello', 'Webpack', '&', 'Nodejs', '!'], ' ');
return eleDiv;
}
document.body.appendChild(divComp());
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hello</title>
</head>
<body>
<script src="bundle.js"></script>
</body>
</html>
13.再次通过Webpack工具打包Node应用,由于在package.json
配置文件中的scripts
节点中重新定义了脚本执行命令,因此需要输入新的命令来执行Webpack打包操作
npm run build
build
参数是在package.json
配置文件中定义的。由于在webpack.config.js
中配置了mode
参数。
此时可以再次测试这个Node应用,在浏览器中打开index.html
。
14.通过webpack-dev-server
插件实现Node应用热加载,安装
npm install webpack-dev-server --save-dev
在package.json
的scripts
节点中新增一个dev
参数
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"build": "webpack",
"dev": "webpack-dev-server"
}
修改webpack.config.js
const path = require('path');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist')
},
mode: 'development',
devServer: {
static: './dist'
}
}
然后运行命令执行打包操作
npm run dev
15.配合HotModuleReplacementPlugin插件实现Node应用热更新,修改webpack.config.js
const path = require('path');
const webpack = require('webpack');
module.exports = {
entry: './src/index.js',
output: {
filename: 'bundle.js',
path: path.resolve(__dirname, 'dist'),
clean: true
},
mode: 'development',
devServer: {
static: './dist',
hot: true
},
plugins: [
new webpack.HotModuleReplacementPlugin()
]
}
再次运行
npm run dev
然后修改index.html
或者index.js
可以看到,页面实现了热加载。