AJAX入门到实战,学习前端框架前必会的(ajax+node.js+webpack+git)(九)

本文详细介绍了如何使用webpack配置开发服务器环境,包括安装webpack-dev-server、设置开发模式、热更新、打包模式应用、环境变量管理、sourcemap调试、别名和CDN使用,以及多页面打包和公共代码分割的实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

26.搭建开发环境

开发环境 | webpack 中文文档 (docschina.org)

之前运行时出现的警告和mode配置有关

目标11:配置开发服务器环境 webpack-dev-server

   11.1 下载 webpack-dev-server 软件包到当前项目

   11.2 设置打包的模式为开发模式,配置自定义命令

   11.3 使用 npm run dev 来启动开发服务器,试试热更新效果

注意1:webpack-dev-server 借助 http 模块创建 8080 默认 Web 服务

注意2:默认以 public 文件夹作为服务器根目录

注意3:webpack-dev-server 根据配置,打包相关代码在内存当中,以 output.path 的值作为服务器根目录(所以可以直接自己拼接访问 dist 目录下内容)

内存有,磁盘也有

output.path 的值

神奇操作

可自动跳转

可观察到自动打包及热更新

27.打包模式

不推荐配置项的方式(写完代码,还得记得修改值,不如记住命令)

代码被极致压缩

修改build命令

分成一段段的好处,某个文件的代码发生变化,直接替换对应名字对应的代码,让我们更快速看到开发项目的运行效果(模块热替换更快速)

补充:打包的main.css

28.打包模式的应用

需求:在开发模式下用 style-loader 内嵌更快,在生产模式下提取 css 代码

在开发模式下用 style-loader把css代码内嵌在js文件中,开发时如果样式发生修改,可以更快地替换到我们网页上

在生产模式下,想要把css单独提取成一个文件,为了让打包输出后的代码,在用户的浏览器上可以并行下载css和js代码

需要判断当前运行时所在的环境

方案1:webpack.config.js 配置导出函数

模式(Mode) | webpack 中文文档 (docschina.org)

只接受2种模式,但项目开发过程中,配置可能不止区分于两个环境,可能有测试环境,预发布环境,还有一些其他环境

方案2:借助 cross-env (跨平台通用)包命令,设置参数区分环境

独立文件

内嵌

方案3::配置不同的 webpack.config.js (适用多种模式差异性较大情况)

生产环境 | webpack 中文文档 (docschina.org)

29.前端-注入环境变量

webpack 中文文档 (docschina.org)

webpack为内置

该插件会在webpack打包源代码时,把代码视作字符串,匹配到对应的key,会替换成value

(cross-env 设置的只在 Node.js 环境生效,前端代码无法访问 process.env.NODE_ENV,但打包后使用该插件打包会留下相应的字符串值)

不能直接使用表达式(字符串)

process.env.NODE_ENV

插件内部源码发现value为字符串,会将其视作变量

30.打包模式的应用

31.开发环境调错 - source map

开发环境 | webpack 中文文档 (docschina.org)

Devtool | webpack 中文文档 (docschina.org)

制作错误,在183行

报错行数与源码对不上

配置devtool选项,启动开发环境

点击跳转

所以上线不要使用source map

生产环境

打包后,只有一行,外加列数

32.解析别名 alias

使用别名

别名生效

33.优化-CDN使用

1.模板语法(html-webpack-plugin插件要求使用的语法)

学习过程中,使用免费的cdn服务

1.在 html 中引入第三方库的 CDN 地址 并用模板语法判断

(在网站里找到响应的网址)

2. 配置 webpack.config.js 中 externals 外部扩展选项

(防止某些 import 的包被打包)

如果为开发环境,cdn则不生效

3. 两种模式下打包观察效果

开发

查看源代码,没有cdn地址

生产

bootstrap样式没有一起被打包进来

axios的import语句变成了一个全局变量留在原地

网页样式正常,请求可发送

知识补充:

逻辑代码先于axios代码引入,为何正常执行?

——因为添加了defer属性

面试官:说一下script 标签中 defer(推迟) 和 async(异步) 的区别_script的async和defer应用场景-优快云博客

34.多页面打包

1.之前手写的js代码统一外部导入html使用,现在需要使用模块化导入入口文件

2.下载 form-serialize 包并导入到核心代码中使用(略过,该部分目前暂时没用上,表单搜集已经逐一手写过)

3.配置 webpack.config.js 多入口和多页面的设置(如图)

35.案例-发布文章页面打包

无论在本地开发,或打包到生产模式,都可以用cdn引入css,

不需要变量接收,用不到css代码里面的内容,

自己编写的代码(index.js)需要被处理,要引到入口js中

如果

本地开发用npm下载,

上线再用cdn要使用模板语法判断

wangeditor只能用require的方式代入(webpack两种导入方式都能识别)

36.优化-分割公共代码

生成公共代码:

37.总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值