2017-07-26 6 views
1

Ich erstelle Desktop-App mit nw.js Framework mit eckigen. In meinem Controller, Dienstleistungen usw. Ich verwende oft Node.js Module wie folgt aus:Gute Praxis, um globale Objekte in eckigen zu verwenden

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'); 
    }]); 
}; 

Ist das eine gute Praxis? Oder vielleicht besser einen Service erstellen oder Module in $ ?

Antwort

2

Allgemeinen require s sollte nicht im Dienst Konstruktor bleiben (es sei denn, sie bedingt sind):

var fs = require('fs'); 
var path = require('path'); 
var gui = require('nw.gui'); 

ngModule.service('User', ['$q', function ($q) { 
    ... 
}]); 

Der obige Code erfordert Pakete wie proxyquire verwenden Knoten Module und testen Sie den Dienst in Isolation zu verspotten.

DI soll zusätzliche Flexibilität und Testbarkeit für die Anwendung einführen. Die Abhängigkeiten in einem separaten Modul zu haben, das leicht gestempelt werden kann, ist im Allgemeinen vorzuziehen, um dies zu handhaben:

angular.module('node', []) 
.constant('gui', require('nw.gui')) 
... 

... 

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