以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模块并proxyquire
testing服务。
DI应该为应用程序提供额外的灵活性和可testing性。 将依赖关系放在单独的模块中,可以很容易被桩住,这是处理这个问题的最好方法:
angular.module('node', []) .constant('gui', require('nw.gui')) ... ... angular.module('app', ['node']) .service('User', function ($q, gui, ...) { ... });