用于在angularjs和node.js之间共享库的模式

如何在angularjs和node.js之间共享一个库?

例如,一个angularjs服务通常是可重用的一段代码。 我们以一个URL库为例(挑选并构造URL)。

相同的库应该可以在node.js中使用。

我的约束是我想共享库代码,但我不想限制自己在浏览器端的任何加载器库。 所以,如果我需要在浏览器中使用RequireJS,我需要禁用任何加载部分,以便可以在其他地方进行控制。

那么如何分享代码?

在支持多个环境的很多不同的地方你会看到,你的“服务”中的整个返回值被封装为一个传递给初始化函数的参数。 需要牢记的一点是,服务可能不应该有其他依赖保持环境不可知(如果这是一个简单的实用程序文件,例如,不会有冲突)。

作为例子考虑:

(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 } }())) 

如果需要,通过节点需要语法,或者dependency injection,依然可以依赖,但是当服务从一个项目移动到另一个项目时,服务可能需要修改。