在前端开发中很喜欢Angularjs的依赖注入功能,在后端的开发中也想在nodejs中拥有一样的功能,网上找了一些资料,没有找到合适的node package,所以自己参照Angularjs实现了一个简单的版本。 整体的代码在:https://github.com/OpenFPGAduino/Arduinojs/blob/master/server.js 主要的核心是两个部分: 1 var module = loadDir(‘apps’); //将apps目录下的js文件作为模块加在到nodejs中。 2 对module变量中的每一个模块,调用toString方法获得模块的源码,然后对源码使用简单的正则表达式做词法分析,获得需要注入的参数列表,最后以所需参数列表调用模块初始化函数。 for (m in module) { // load all modules in apps var parameter = module[m].toString() .replace(/((//.$)|(/*[\s\S]?*/)|(\s))/mg, ‘’) // remove spaces and comments .match(/^function\s*[^(](\s([^)]*))/m)[1] // get parameter logger.debug('parameter is ’ + parameter); eval(‘module[m]’ + ‘(’ + parameter + ‘)’); // dependency injection, inject the var the apps needs in it parameter } 好了,简单的依赖注入就写好了,相对于Angularjs的依赖注入,这个实现相对简单,但是对于后台nodejs程序来说够用了,有了依赖注入,nodejs程序的模块化设计就方便多了。
Nodejs中依赖注入的简易实现