CNode

Nodejs中依赖注入的简易实现

分享
Llizhizhou发布于10 年前最后回复10 年前6 回复7850 浏览0 收藏

在前端开发中很喜欢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程序的模块化设计就方便多了。

查看回复

回复 (6)

L
lizhizhou#2·10 年前

只是抛砖引玉

L
lizhizhou#3·10 年前
引用 i5tinghttps://github.com/shimohq/fastdi

@i5ting 在github上star你了

L
lizhizhou#4·10 年前
引用 i5tinghttps://github.com/shimohq/fastdi

@i5ting 欢迎一起交流学习

Y
yakczh#5·10 年前

toString+正则+eval
高大上的外表后面,就是这些东西

X
XGHeaven#6·10 年前

有个叫 di 的,就是和你的类似的

来自酷炫的 CNodeMD

参与回复
登录后即可参与回复。登录