2016-05-25 7 views
5

Ich habe Knoten-Anwendung (die als Npm-Modul verwendet und als Abhängigkeit von der package.json von anderen Knoten-App verwendet), die Zugriff auf einige interne Module (für die App, die ist mit meinem Paket als Abhängigkeit) alle diese Module verwenden Export für die Funktionen, dieExpose Module von Knoten NPM-Anwendung

Mein „main“ Modul sein musste verbrauchen ist die index.js

im Inneren ich folgendes tun:

var appState = require("./utils/appState"); 
var appLclStorage = require("./utils/AppLocalStorage"); 
var processHandler = require("./controller/processHandler"); 
.... 

var appApi = module.exports = {}; 

appApi.appState = appState; 
appApi.appLclStorage = appLclStorage; 
appApi.processHandler = processHandler; 
.... 

Ich habe zusätzliche modu le, um draußen auszusetzen ...

Das funktioniert OK aber meine Frage ist, ob es eine bessere/sauberere Möglichkeit gibt, das in Knoten zu tun?

+3

Das ist ein Ansatz, den ich viel zu sehen. –

+1

Ich bin nicht sicher, es gibt einen besseren Ansatz wegen der Anforderung der 'main'-Datei in Ihrem' package.json', auch große Pakete wie die [aws-sdk] (https://github.com/aws/aws -sdk-js/blob/master/lib/aws.js) schreiben mit diesem Muster. Große Frage aber. – peteb

+0

@peteb - Danke :) –

Antwort

0

Ich finde es funktioniert gut, es so zu tun, wie Sie beschreiben.

Sie könnten etwas darauf aufbauen, indem Sie eine index.js-Datei in ein Verzeichnis einfügen und die anderen Dateien aus demselben Verzeichnis exportieren. Dann require das Verzeichnis, um alle zu bekommen.

// add.js 
module.exports = function (num1, num2) { 
    return num1 + num2; 
}; 

// subtract.js 
module.exports = function (num1, num2) { 
    return num1 - num2; 
}; 

// multiply.js 
module.exports = function (num1, num2) { 
    return num1 * num2; 
}; 

// index.js 
var Calc = {}; 
require('fs').readdirSync(__dirname).forEach(function (file) { 
    if (file !== 'index.js') { 
    var fileName = file.replace('.js', ''); 
    Calc[fileName] = require('./' + fileName); 
    } 
}); 
module.exports = Calc; 

// main.js 
var Calc = require('./calc'); 

var zero = Calc.subtract(1, 1); 
var one = Calc.multiply(1, 1); 
var two = Calc.add(1, 1); 

mit folgenden Dateistruktur:

├── calc 
│   ├── add.js 
│   ├── index.js 
│   ├── multiply.js 
│   └── subtract.js 
└── main.js 
Verwandte Themen