以angular度使用全局对象的良好做法

我正在用angular度创build使用nw.js框架的桌面应用程序。 在我的控制器,服务等我经常使用这样的Node.js模块:

 module.exports = function(ngModule) { ngModule.service('User', ['$q', function ($q) { var self = this; var fs = require('fs'); var path = require('path'); var gui = require('nw.gui'); }]); }; 

这是一个很好的做法吗? 或者,也许更好的创build一些服务或把模块放在$ rootScope

一般require s不应该保留在服务构造函数中(除非是有条件的):

 var fs = require('fs'); var path = require('path'); var gui = require('nw.gui'); ngModule.service('User', ['$q', function ($q) { ... }]); 

上面的代码将需要使用像proxyquire这样的proxyquire来模拟Node模块并proxyquiretesting服务。

DI应该为应用程序提供额外的灵活性和可testing性。 将依赖关系放在单独的模块中,可以很容易被桩住,这是处理这个问题的最好方法:

 angular.module('node', []) .constant('gui', require('nw.gui')) ... ... angular.module('app', ['node']) .service('User', function ($q, gui, ...) { ... });