Node.js
Moduł eksportu i importu w node.js
Szukaj…
Korzystanie z prostego modułu w node.js
Co to jest moduł node.js ( link do artykułu ):
Moduł hermetyzuje powiązany kod w pojedynczą jednostkę kodu. Podczas tworzenia modułu można to interpretować jako przeniesienie wszystkich powiązanych funkcji do pliku.
Teraz zobaczmy przykład. Wyobraź sobie, że wszystkie pliki znajdują się w tym samym katalogu:
Plik: printer.js
"use strict";
exports.printHelloWorld = function (){
console.log("Hello World!!!");
}
Inny sposób korzystania z modułów:
Plik animals.js
"use strict";
module.exports = {
lion: function() {
console.log("ROAARR!!!");
}
};
Plik: app.js
Uruchom ten plik, przechodząc do katalogu i wpisując: node app.js
"use strict";
//require('./path/to/module.js') node which module to load
var printer = require('./printer');
var animals = require('./animals');
printer.printHelloWorld(); //prints "Hello World!!!"
animals.lion(); //prints "ROAARR!!!"
Używanie importów w ES6
Node.js jest zbudowany na nowoczesnych wersjach V8. Dzięki aktualnościom o najnowszych wersjach tego silnika zapewniamy terminowe wprowadzanie nowych funkcji ze specyfikacji JavaScript ECMA-262 do programistów Node.js, a także ciągłą poprawę wydajności i stabilności.
Wszystkie funkcje ECMAScript 2015 (ES6) są podzielone na trzy grupy dla funkcji wysyłkowej, etapowej i w toku:
Wszystkie funkcje wysyłki, które V8 uważa za stabilne, są domyślnie włączone w Node.js i NIE wymagają żadnych flag wykonawczych. Funkcje etapowe, które są prawie ukończonymi funkcjami, które nie są uważane za stabilne przez zespół V8, wymagają flagi czasu działania: - Harmonia. W toku funkcje mogą być aktywowane indywidualnie za pomocą odpowiedniej flagi harmonii, chociaż jest to wysoce odradzane, chyba że do celów testowych. Uwaga: te flagi są widoczne w wersji V8 i potencjalnie mogą ulec zmianie bez powiadomienia o wycofaniu.
Obecnie ES6 obsługuje natywnie instrukcje importowania. Patrz tutaj
Więc jeśli mamy plik o nazwie fun.js
…
export default function say(what){
console.log(what);
}
export function sayLoud(whoot) {
say(whoot.toUpperCase());
}
… A jeśli app.js
inny plik o nazwie app.js
którym chcemy wykorzystać nasze wcześniej zdefiniowane funkcje, istnieją trzy sposoby ich zaimportowania.
Importuj domyślnie
import say from './fun';
say('Hello Stack Overflow!!'); // Output: Hello Stack Overflow!!
Importuje funkcję say()
ponieważ jest oznaczona jako domyślny eksport w pliku źródłowym ( export default …
)
Nazwany import
import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.
Nazwane importy pozwalają nam importować dokładnie te części modułu, których faktycznie potrzebujemy. Robimy to, nadając im jawne nazwy. W naszym przypadku, nazywając sayLoud
w nawiasach klamrowych w instrukcji importu.
Import w pakiecie
import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!
Jeśli chcemy mieć wszystko, jest to dobra droga. Korzystając ze składni * as i
mamy instrukcję import
, dostarczamy obiekt i
który przechowuje wszystkie eksporty naszego fun
modułu jako odpowiednio nazwane właściwości.
Ścieżki
Pamiętaj, że musisz wyraźnie oznaczyć ścieżki importu jako ścieżki względne, nawet jeśli importowany plik znajduje się w tym samym katalogu, co plik, do którego importujesz za pomocą ./
. Importuje z nieprzedstawionych ścieżek, takich jak
import express from 'express';
zostanie node_modules
w lokalnych i globalnych folderach node_modules
i zgłosi błąd, jeśli nie zostaną znalezione pasujące moduły.
Eksportowanie ze składnią ES6
Jest to odpowiednik innego przykładu, ale zamiast tego używa ES6.
export function printHelloWorld() {
console.log("Hello World!!!");
}