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

标签 javascript node.js angularjs

如何在 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/

相关文章:

javascript - 通过 JavaScript 访问 API

javascript - X-WP-Nonce == Cookie 随机数无效

node.js - 具有粘性 session 的 Nodejs 集群

node.js - 在数据库回调上重新生成 session

javascript - AJAX POST 请求失败

javascript - 如何在selenium中验证notify.js警报

node.js - socket.io,指定套接字中的用户

javascript - AngularJS:为什么我不能在我的 View 中注入(inject)html?

angularjs - Firebase 3.身份验证不持久

javascript - 使用 javascript 将 56666.666666666664% 百分比替换为三位数百分比