如何在angularjs和node.js之间共享库?
例如,angularjs服务通常是可重复使用的代码段。我们以URL库为例(挑选并构建URL)。
同一个库应该可以在node.js中使用。
我的约束是我想共享库代码,但我不想将自己限制在浏览器端的任何加载程序库。因此,如果我需要在浏览器中使用RequireJS,我需要禁用任何加载部分,以便可以在其他地方进行控制。
那我该如何分享代码?
答案 0 :(得分:8)
在许多支持多个环境的不同地方你会看到的是将“service”中的整个返回值包装到从闭包传递给初始化函数的参数中。使用angular来记住的一个问题是,服务可能不应该有其他依赖关系来保持环境不可知(例如,如果这是一个简单的实用程序文件,则不会发生冲突)。
作为一个例子考虑:
(function( myService){
if (typeof module !== 'undefined' && module.exports ) {
module.exports = myService;
} else if( angular ){
angular.module('yourModule', [])
.factory('serviceNameHere', function(){ return myService; });
} else {
window.myService = myService;
}
}(function(){
function foo(){/* Do something */}
function bar(){/* Do something else */}
return {
foo: foo,
bar: bar
}
}()))
如果需要,你可以通过节点需要语法或角度的依赖注入来获得依赖关系,但是当服务从一个项目移动到另一个项目时,服务可能需要修改。