- 1、本文档共15页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
Webpack搭建本地服务器
王红元coderwhy
目录
content
1开启本地服务器
2HMR热模块替换
3devServer配置
4开发和生成环境
coderwhy为什么要搭建本地服务器?
◼目前我们开发的代码,为了运行需要有两个操作:
操作一:npmrunbuild,编译相关的代码;
操作二:通过liveserver或者直接通过浏览器,打开index.html代码,查看效果;
◼这个过程经常操作会影响我们的开发效率,我们希望可以做到,当文件发生变化时,可以自动的完成编译和展示;
◼为了完成自动编译,webpack提供了几种可选的方式:
webpackwatchmode;
webpack-dev-server(常用);
webpack-dev-middleware;
coderwhywebpack-dev-server
◼上面的方式可以监听到文件的变化,但是事实上它本身是没有自动刷新浏览器的功能的:
当然,目前我们可以在VSCode中使用live-server来完成这样的功能;
但是,我们希望在不适用live-server的情况下,可以具备livereloading(实时重新加载)的功能;
◼安装webpack-dev-server
npminstallwebpack-dev-server-D
◼修改配置文件,启动时加上serve参数:
◼webpack-dev-server在编译之后不会写入到任何输出文件,而是将bundle文件保留在内存中:
事实上webpack-dev-server使用了一个库叫memfs(memory-fswebpack自己写的)
coderwhy认识模块热替换(HMR)
◼什么是HMR呢?
HMR的全称是HotModuleReplacement,翻译为模块热替换;
模块热替换是指在应用程序运行过程中,替换、添加、删除模块,而无需重新刷新整个页面;
◼HMR通过如下几种方式,来提高开发的速度:
不重新加载整个页面,这样可以保留某些应用程序的状态不丢失;
只更新需要变化的内容,节省开发的时间;
修改了css、js源代码,会立即在浏览器更新,相当于直接在浏览器的devtools中直接修改样式;
◼如何使用HMR呢?
默认情况下,webpack-dev-server已经支持HMR,我们只需要开启即可(默认已经开启);
在不开启HMR的情况下,当我们修改了源代码之后,整个页面会自动刷新,使用的是livereloading;
coderwhy开启HMR
◼修改webpack的配置:
◼浏览器可以看到如下效果:
◼但是你会发现,当我们修改了某一个模块的代码时,依然是刷新的整个页面:
这是因为我们需要去指定哪些模块发生更新时,进行HMR;
coderwhy框架的HMR
◼有一个问题:在开发其他项目时,我们是否需要经常手动去写入module.hot.accpet相关的API呢?
比如开发Vue、React项目,我们修改了组件,希望进行热更新,这个时候应该如何去操作呢?
◼事实上社区已经针对这些有很成熟的解决方案了:
比如vue开发中,我们使用vue-loader,此loader支持vue组件的HMR,提供开箱即用的体验;
比如react开发中,有ReactHotLoader,实时调整react组件(目前React官方已经弃用了,改成使用react-refresh);
coderwhyhost配置
◼host设置主机地址:
默认值是localhost;
如果希望其他地方也可以访问,可以设置为;
◼localhost和的区别:
localhost:本质上是一个域名,通常情况下会
文档评论(0)