在nodejs编程中,常会用require引用外部模块,及其中的变量,如:

var test = require("./module.js").test;

假如有这样的需求:当上面模块中的test变量内容发生变化时,希望引用它的变量test(上面代码中左边)也同步发生变化。如何实现呢?

注意:首先需要知道的是,如果不做任何处理,当模块中的变量变化时,外部的引用变量内容是不会变的,外部变量引用的内容是被缓存的。

实现方法有两种:
1、清缓存,重新引用,
例程:
require.js文件内容:

setInterval(function(){
//console.log(require.cache);//打印出缓存内存
delete require.cache[require.resolve("./module.js")];//删除对应的缓存内存
var test = require("./module.js").test;//重新引用
console.log(test);//打印出内容,以进行观查
},1000)

module.js文件内容:
exports.test="abc";

测试步骤:
node require.js,然后手动修改module.js中的变量内容

运行截图:
require

警告:频繁的delete缓存方式,可能会造成内存泄漏,所以,并不适合太多次重复调用。

2、功能逻辑
比如通过代码实现修改外部文件时,同步的修改引用值的内容。

知识分享:
nodejs代码是可以加密的,防止代码泄漏、被他人随意修改、使用。nodejs代码加密方法:用Jshaman(http://www.jshaman.com/)进行js代码混淆加密。