【问题标题】:Good practice to use global objects in angular在角度中使用全局对象的好习惯
【发布时间】:2017-07-26 14:04:19
【问题描述】:

我正在使用带有角度的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 中?

【问题讨论】:

    标签: javascript angularjs node.js nw.js


    【解决方案1】:

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

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

    上面的代码需要使用像proxyquire这样的包来模拟Node模块并单独测试服务。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2016-04-26
      • 2011-09-01
      • 2014-12-23
      • 2019-05-18
      • 2022-12-04
      • 1970-01-01
      相关资源
      最近更新 更多