Node.js原生HMR:告别模块重载时代

2025-06-04

本文介绍了如何在Node.js中实现原生的热模块替换(HMR)。传统方法使用`--watch`标志或类似Vite的虚拟模块系统,效率低下且存在模块隔离问题。作者通过巧妙地利用Node.js内置的`node:module`模块钩子,实现了基于文件版本号的增量更新机制。核心在于`FileTree`类加载并监控文件树,`useTree`钩子拦截模块加载过程,并通过在URL中添加版本号来实现缓存失效。依赖树的构建保证了当依赖模块变更时,父模块也能得到更新,最终实现了高效的HMR,避免了整个模块树的重新评估。

阅读更多
开发 HMR

利用Node模块钩子加速前端开发

2025-05-07

为了加快前端开发速度,作者创建了一系列正交的Node模块钩子。其中一个模块加载器将JSX转换为JS,另一个重新映射导入,另一个在找不到.js文件时查找.{ts,tsx,jsx}文件,最后一个与FileTree配合使用,利用查询字符串缓存失效机制加载文件的最新版本。FileTree的更新事件触发前端重建,模块版本控制保证仅在依赖项更改时才重新执行,从而保留运行时状态并避免重启整个进程。

阅读更多
开发 模块钩子