观察模式&DevServer|Webpack

345 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

开发环境

实际工作中,开发环境是必需的

前文提到的 SourceMap 方便调试错误,开发构建时推荐eval-source-map

想象下工作场景:编写源代码,接着Webpack打包编译,执行build命令,然后浏览器运行,最终查看效果

开发环境不同于生产环境,若按照这样的流程进行,调试一个功能就需要花费很多时间,工作效率低

在每次编译代码时,手动运行 npm run build 会显得很麻烦。

而 webpack 已经解决这个问题:支持代码发生变化后自动编译代码,见下:

观察模式(watch mode)

启用 Watch 模式。这意味着在初始构建之后,webpack 将继续监听任何已解析文件的更改

开启观察模式,可理解为:Webpack初始构建后,监听文件变化,当文件修改后,会自动重新打包编译

划重点:自动,避免了手动执行命令编译的操作,工作效果提高了不少

how

修改package.json

"scripts": {
     "watch": "webpack --watch",  // or webpack --watch --config xxx.js
     "build": "webpack"
 },

安装clean-webpack-plugin插件,对应 webpack 配置:

const path = require('path');
const { CleanWebpackPlugin } = require('clean-webpack-plugin');

entry: {
   main: './src/xxx',
},
output: {
    path: path.join(__dirname, '../xxx/dist'),
    publicPath: '',
    filename: '[name].js',
},

plugins: [
    new CleanWebpackPlugin({ cleanStaleWebpackAssets: false })
]

执行npm run watch命令,完成初始构建,再修改代码,得:

image.png

指定出口dist目录:index.html更新

image.png

缺点

观察模式虽不用手动打包,但存在:

唯一的缺点是,为了看到修改后的实际效果,你需要刷新浏览器。

对应开发体验:修改代码 --- 自动重新打包编译 --- 手动刷新浏览器 --- 查看效果

webpack-dev-server

watch mode需手动刷新浏览器的解决方案:编译后能够自动刷新浏览器

webpack-dev-server 提供了一个基本的 web server,并且具有 live reloading(实时重新加载) 功能。

特点

  • 一个本地开发服务器,即不是以文件形式预览,而是使用HTTP服务来运行

  • 集成了自动打包编译+自动刷新浏览器的功能

    开发体验变为:修改代码 --- 自动重新打包编译 --- 自动刷新浏览器 --- 查看效果

devServer配置

webpack的devServer属性,是对应为webpack-dev-server提供的配置

常用功能:Proxy 代理、启用热模块替换(HMR)、为响应添加headers等等

具体详见 传送门

链接传送门

# webpack指南 - 选择一个开发工具

# webpack配置 - watch

# webpack配置 - DevServer

使用 Dev Server 提高本地开发效率

Last but not least

如有不妥,请多指教呀~