位置: 编程技术 - 正文

Webpack 实现 Node.js 代码热替换(webpack使用ejs)

编辑:rootadmin

推荐整理分享Webpack 实现 Node.js 代码热替换(webpack使用ejs),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:webpackjsonp,node.js+webpack开发实战,webpack使用ejs,node.js+webpack开发实战,webpack nodejs,webpack nodejs,webpack5 node,webpack5 node,内容如对您有帮助,希望把文章链接给更多的朋友!

这两天为了这个问题, Gitter 上问, Twitter 上问, GitHub 上问, 两天没反应原来写博客的 jlongster 不理我, 我也不知道 Webpack 作者的联系方式最后在 Gitter 上发的消息他似乎看到了, 就粗略地解释了一遍, 醍醐灌顶啊... 理解之后主要就是 Webpack 怎么配置和脚本怎么运行我写了一遍, 代码仅仅是这么短, 热替换就实现了: jlongster 的配置教程里抄: 注意是 webpack 而不是 webpack-dev-server注意后台运行的 & 只是为了不阻塞, 你有两个终端就开两个吧

我写了两个测试文件, 一个是会修改的代码 src/lib.coffee:

另一个入口文件 src/main.coffee 包含了处理模块替换的代码:

跑一跑 Demo, 就知道效果怎么样了, setInterval 不受替换的干扰而在 build/ 目录, 每次修改都会生成一个 JSON 文件记录修改的内容:

Webpack 实现 Node.js 代码热替换(webpack使用ejs)

具体的文件内容也就是这样, 大致可以认为包含了识别更新所需的信息:

其他方案

白天在网上查找方案, 顺便在论坛上发了个帖子问这个事情,现成的主要两个说明比较清楚的方案, 值得借鉴一下

一个是百度的技术博客上, 写的大概是怎么对 module 对象做处理,也就是手工监听文件修改, 然后清楚模块缓存, 重新挂载模块思路清晰考虑细致, 虽然有点冗余代码, 还是可以一试: require.extensions 做了 hack, 增加了操作和事件,当模块文件更新时, 对应模块自动更新, 并且 emit 一个事件,通过这样的效果, 模块引用的位置可以做一些处理, 使用新的代码,这个应该说还是比较粗暴的, 毕竟不是所有的代码都容易替换 Webpack 这棵树上吊死, 也就不打算深入研究了,也许 Node.js 官方对 lib/module.js 做下优化能搞出不错的功能来,然而, JavaScript 毕竟不是不可变数据使用成风的社区, 比不了 Erlang,因为代码替换就涉及到状态更新的问题, 不好搞, 不如重启来得省事,而重启现在有 node-dev supervisor nodemon 三套方案任你选

对我来说, 主要是 Cumulo 方案对 WebSocket 存在巨大的依赖,现在前端开发已经能做到服务器上更新代码, 客户端自动更新了,通过 Webpack 和 React 的机制, 局部更新 DOM 和纯函数模块,如果说能够做到开发环境也能热替换, 这对于开发效率的提升就太大了,本来觉得热替换遥不可及的, 然而很可能是触手可及的效率提升!

后面大概还有坑, 毕竟黑科技... 遇到再说了

有兴趣可以细看下 jlongster 写的相关的几篇神作, 非常有帮助:

浅谈node.js中async异步编程 1.什么是异步编程?异步编程是指由于异步I/O等因素,无法同步获得执行结果时,在回调函数中进行下一步操作的代码编写风格,常见的如setTimeout函数、a

浅析Node.js 中 Stream API 的使用 本文由浅入深给大家介绍node.jsstreamapi,具体详情请看下文吧。基本介绍在Node.js中,读取文件的方式有两种,一种是用fs.readFile,另外一种是利用fs.createR

Nodejs实战心得之eventproxy模块控制并发 目标建立一个lesson4项目,在其中编写代码。代码的入口是app.js,当调用nodeapp.js时,它会输出CNode(

标签: webpack使用ejs

本文链接地址:https://www.jiuchutong.com/biancheng/370630.html 转载请保留说明!

上一篇:Node.js巧妙实现Web应用代码热更新(node.js实战)

下一篇:浅谈node.js中async异步编程(node.js axios)

  • 作废的发票要拿出来吗
  • 免税农产品发票怎么抵扣申报
  • 发工资可以用个税抵扣吗
  • 土地使用权入账价值包括哪些
  • 两免三减半的概率是多少
  • 股权增值转让的财税处理
  • 即征即退免所得税吗
  • 外贸业务收境外人民币
  • 盈余公积的用途是什么
  • 实际费用比预算高
  • 所有者权益科目编码
  • 投资收益会计处理
  • 车辆一次性入费用会计分录
  • 虚开增值税专用发票罪判决书
  • 增值税征收比例和征收方式
  • 个税提前预缴怎么入账?
  • 手撕发票的税点是多少
  • 所得税不能税前扣除项目
  • 收回应收账款资产为什么不变
  • 测试账户收入怎么做
  • 展厅设计费用计什么科目
  • 关于工程施工的文章
  • 如何彻底删除QQ频道私信
  • wifi密码怎么改手机里面
  • 股票分红怎么扣税
  • 苹果macOSBigSur是什么型号
  • 甲供材料增值税
  • 享受安置残疾人优惠政策的报告怎么写
  • 冬日里的科赫尔湖,德国巴伐利亚州 (© Reinhard Schmid/eStock Photo)
  • 税控盘每年的服务费可以抵扣吗
  • 什么是成本会计
  • 更换电脑金税盘的数据如何导入新电脑
  • 长期应付款列报为什么是后一年的
  • 基于YOLOv5的中式快餐店菜品识别系统
  • yolov5增加检测层
  • 猿猴的作文
  • ps快速选择工具抠图后怎么拉出来
  • 费用科目在贷方表示
  • 人工费按照考虑管理费和利润吗
  • sql防御
  • 以发行股票作为对价取得企业的股权
  • sql2019远程连接
  • 企业与债权人进行债务重组
  • 残保金会计分录人员经费
  • 哪些合同必须签订书面合同
  • 运输公司发票抵扣
  • 销售折扣的账务处理有详细的计算过程
  • 固定资产如何计提折旧
  • 收取的招标资料费增值税税率
  • 一般情况下银行加权平均成本的变化主要取决于什么因素
  • 总账科目和明细账科目有哪些
  • 注销公司复杂吗?
  • 计提的利息汇算清缴时要调整吗
  • 预包装食品加工及销售营业执照图片
  • 其他应收款有没有备抵科目
  • 分公司从业人数填越少越好吗
  • 离岸银行账户开户
  • 会计什么情况下不用继续教育
  • mysql8高可用
  • mysql格式化日期yyyy/mm/dd
  • sbserv.exe - sbserv是什么进程 有什么用
  • ngctw32.exe - ngctw32是什么进程 有什么用
  • pqv2isvc.exe - pqv2isvc是什么进程 有什么作用
  • 批处理 dp0
  • 分享两句话
  • shell delete
  • 笔记本电脑没有鼠标怎么多选文件
  • 前端自动化开发软件
  • android 重启app
  • JavaScript数据类型分为哪两大类
  • jQuery实现ajax的叠加和停止(终止ajax请求)
  • python内置方法大全
  • js 调试
  • js鼠标滚动控制图片缩放
  • python怎么用的
  • 个人所得税如何办理退税
  • 重庆两江新区总工会社会化工作者待遇
  • 电子税务局在线咨询
  • 12366地税投诉
  • 江苏城市规划
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设