在角度中使用全局对象的良好实践

时间:2017-07-26 14:04:19

标签: javascript angularjs node.js nw.js

我使用带角度的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');
    }]);
};

这是一个好习惯吗?或者可以更好地创建一些服务或将模块放入$ rootScope

1 个答案:

答案 0 :(得分:2)

通常def parts(l, n): for i in xrange(0, len(l), n): yield l[i:i + n] somedict = { "aa": 1, "bb": 2, "cc": 3, "dd": 4, "ee": 5, "ff": 6, "gg": 7, "hh": 8, "ii": 9, } keys = somedict.keys() keys.sort() for subkeys in parts(keys, 3): print({k:somedict[k] for k in subkeys}) 不应保留在服务构造函数中(除非它们是有条件的):

require

上面的代码需要使用像var fs = require('fs'); var path = require('path'); var gui = require('nw.gui'); ngModule.service('User', ['$q', function ($q) { ... }]); 这样的软件包来模拟Node模块并单独测试服务。

DI应该为应用程序引入额外的灵活性和可测试性。将依赖项置于可以轻松存根的单独模块中通常是处理此问题的首选方法:

proxyquire