Podręcznik
Podstawy Node.js
Eksportowanie modułów
Tworzenie modułów własnoręcznie może służyć m.in. do porządkowania kodu programu: definicje różnych funkcji można umieścić w jednym pliku, a wywoływać je w innym. Przykładowo, można stworzyć moduł, zawierający funkcje realizujące różne działania na zmiennych tekstowych:
Plik utils.js
function backwards(text) {
return text.split('').reverse().join('');
}
// usuwanie spacji
function removeSpaces(text) {
return text.split(" ").join("");
}
// sprawdzanie, czy tekst jest palindromem
function isPalindrome(text) {
var textWithoutSpaces = removeSpaces(text.toLowerCase());
return textWithoutSpaces === backwards(textWithoutSpaces);
}
Aby określić, które funkcje mają być dostępne po zaimportowaniu modułu, należy tę informację zamieścić w obiekcie module. Obiekt module zawiera własność exports, która również jest obiektem. Funkcje, które mają być wyeksportowane, należy uczynić metodami obiektu module.exports:
module.exports.isPalindrome = isPalindrome;
Alternatywnie, wszystkie funkcje przeznaczone do wyeksportowania można zapisać w obiekcie module.exports za pomocą pojedynczego polecenia (umieszczanego zwykle na końcu pliku):
W odrębnym pliku można zaimportować stworzony moduł za pomocą polecenia require:
// zakładając, że plik "utils.js" jest w tym samym katalogu, co ten plik
i korzystać z dostępnych w nim funkcji:
console.log(utils.backwards(palindrome))
console.log(utils.isPalindrome(palindrome))
true
Cały kod opisanego powyżej przykładowego programu, zawarty w dwóch plikach: utils.js i test.js, jest przedstawiony poniżej:
Plik utils.js
function backwards(text) {
return text.split('').reverse().join('');
}
// usuwanie spacji
function removeSpaces(text) {
return text.split(" ").join("");
}
// sprawdzanie, czy tekst jest palindromem
function isPalindrome(text) {
var textWithoutSpaces = removeSpaces(text.toLowerCase());
return textWithoutSpaces === backwards(textWithoutSpaces);
}
module.exports = { backwards, isPalindrome };
Plik test.js
var notPalindrome = "To nie jest palindrom";
var palindrome = "Jeż largo gra lżej";
console.log(utils.backwards(notPalindrome))
console.log(utils.isPalindrome(notPalindrome))
console.log(utils.backwards(palindrome))
console.log(utils.isPalindrome(palindrome))
Wiersz poleceń
false
jeżl arg ogral żeJ
true
Własności obiektu module.exports nie muszą być metodami; można eksportować również stałe:
module.exports.ver = ver;
Literatura