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

Pattern for sharing a library between angularjs and node.js

本文关键字:模式 共享 之间 node js angularjs      更新时间:2024-01-01

如何在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
  }
}()))

如果需要,您仍然可以通过需要语法的节点或angular的依赖项注入来拥有依赖项,但服务在从一个项目移动到另一个项目时可能需要修改。