2016-05-25 21 views
5

Ho un'applicazione nodo (che ha utilizzato come moudule npm e utilizzata come dipendenza dall'app package.json da un'altra app) che deve fornire l'accesso ad alcuni moduli interni (all'app che è usando il mio pacchetto come dipendenza) tutti quei moduli utilizzano esportazione per le funzioni che dovevano essere consumareEsporre i moduli dall'applicazione NPM nodo

modulo mio "principale" è l'index.js

al suo interno ho effettuare le seguenti operazioni:

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; 
.... 

Ho modu aggiuntivo le esporre all'esterno ...

Questo funziona OK ma la mia domanda è se esiste un modo migliore/più pulito per farlo nel nodo?

+3

Questo è un approccio vedo un sacco. –

+1

Non sono sicuro che ci sia un approccio migliore a causa del requisito del file 'main' nel' package.json', anche pacchetti di grandi dimensioni come il [aws-sdk] (https://github.com/aws/aws -sdk-js/blob/master/lib/aws.js) stanno scrivendo usando questo modello. Grande domanda però. – peteb

+0

@peteb - Grazie :) –

risposta

0

Trovo che funzioni bene nel modo in cui descrivi.

Si potrebbe creare un po 'aggiungendo un file index.js in una directory e facendolo esportare gli altri file dalla stessa directory. Quindi require la directory per averli tutti.

// 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); 

con la seguente struttura di file:

├── calc 
│   ├── add.js 
│   ├── index.js 
│   ├── multiply.js 
│   └── subtract.js 
└── main.js 
Problemi correlati