如何在 angularjs 和 node.js 之间共享一个库?
例如,angularjs 服务通常是一段可重用的代码。我们以 URL 库为例(拆解并构造 URL)。
相同的库应该可以在 node.js 中使用。
我的约束是我想共享库代码,但我不想将自己限制在浏览器端的任何加载器库中。因此,如果我需要在浏览器中使用 RequireJS,我需要禁用任何加载部分,以便可以在其他地方进行控制。
那么我该如何共享代码呢?
最佳答案
在许多支持多种环境的不同地方,您会看到将“服务”的整个返回值包装到从闭包传递给初始化函数的参数中。使用 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
}
}()))
如果需要,您仍然可以通过 Node 需要语法或 Angular 的依赖注入(inject)来拥有依赖关系,但是服务可能需要修改,因为它从一个项目移动到另一个项目。
关于javascript - 在 angularjs 和 node.js 之间共享库的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20296105/