目前不能投入太多时间, 简单说一下
前面看了 Webpack 在前端做热替换的方案, 而且在前端的效果也比较明显的
后端的话, 为了做到修改代码不会重启 WebSocket, 这个功能最近非常想要
Webpack 用的模块化方案基于 CommonJS, 大致的思路是构建模块的 tree
然后 tree 的节点可以冒泡, 跟 DOM 类似, 然后每个模块的 module.hot
上加入了一些代码
这个代码可以用来检测子模块的更新事件, 决定是否热替换代码
比如这样: http://segmentfault.com/a/1190000003879041
var requestHandler = require("./handler.js");
var server = require("http").createServer();
server.on("request", requestHandler);
server.listen(8080);
// check if HMR is enabled
if(module.hot) {
// accept update of dependency
module.hot.accept("./handler.js", function() {
// replace request handler of server
server.removeListener("request", requestHandler);
requestHandler = require("./handler.js");
server.on("request", requestHandler);
});
}
在 Node 方面, 现在看的的一个是百度有一篇文章, 可以手动替换一下代码, 短期可以尝试一下: http://fex.baidu.com/blog/2015/05/nodejs-hot-swapping/ 另外找到个 hotswap 模块, 还不清楚具体机制是怎样的, 也打算尝试一下: https://github.com/rlidwka/node-hotswap 单纯从原理上讲, 在 Node 上实现一套热替换的难度并不会比 Webpack 大, 我就奇怪为什么没人做 也许对些 HTTP 无状态请求的同学来说整个服务器重启无所谓吧, node-dev nodemon supervisor 还够用 但是考虑一下, 修改代码, WebSocket 不受影响, 后端的代码直接更新了, 新的请求直接用新的代码 打算花点时间研究一下