开发工具: 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 可以看到,页面实现了热加载。
|