2016-05-25 18 views
5

Mam aplikację węzła (która była używana jako mmula npm i używana jako zależność od package.json przez inną aplikację węzła), która musi zapewnić dostęp do niektórych modułów wewnętrznych (do aplikacji, która jest używając mojego pakiet jako zależność) wszystkie te moduły używać wywozowa dla funkcji, które musiały być zużywająUjawnij moduły z aplikacji NPM węzła

My „main” modułu jest index.js

środku I wykonaj następujące czynności:

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

Mam dodatkowe modu le to expose outside ...

To działa OK ale moje pytanie brzmi, czy istnieje lepszy/czysty sposób to zrobić w węźle?

+3

To podejście widzę dużo. –

+1

Nie jestem pewien, czy jest lepsze podejście ze względu na wymaganie pliku 'main' w twoim' package.json', nawet duże pakiety, takie jak [aws-sdk] (https://github.com/aws/aws -sdk-js/blob/master/lib/aws.js) zapisują ten wzorzec. To wspaniałe pytanie. – peteb

+0

@peteb - Dziękuję :) –

Odpowiedz

0

Uważam, że działa dobrze, robiąc to tak, jak opisujesz.

Można na nim trochę zbudować, dodając plik index.js do katalogu i eksportując pozostałe pliki z tego samego katalogu. Następnie require katalogu, aby je wszystkie.

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

o następującej strukturze pliku:

├── calc 
│   ├── add.js 
│   ├── index.js 
│   ├── multiply.js 
│   └── subtract.js 
└── main.js 
Powiązane problemy