实现原理 使用代理的方式让所有类和实例能够在js文件更改后, 对被代理对象进行替换, 实现热更新.
作用 使用这个模块引入的js文件, 在修改后不需要重启服务器, 可以达到下列效果:
- require.cache更新了, 新的require使用新的js
- 原来旧的类对应的实例也更新了 具体就是: 绑定在prototype下的函数, 绑定在类上的函数等也更新了, 旧实例调用的是新的代码.
注意
- 因为代理会消耗一定资源, 所以建议只在逻辑js上使用.
- 目前建议开发环境中用, 因为还在完善
安装
npm install hot-require
引入
// app启动时候引入这个模块, 引入一次即可
require('hot-require');
示例
// 需要热更新js, 用下面方式代替原有的require函数
var yourJs = _require(__dirname, '[your js path]');
源码 github: https://github.com/rayosu/hot-require 欢迎大家给意见, 完善和扩展这个方案.