Node.js
Modul in node.js exportieren und importieren
Suche…
Verwenden eines einfachen Moduls in node.js
Was ist ein node.js-Modul ( Link zum Artikel ):
Ein Modul kapselt zugehörigen Code in einer einzigen Codeeinheit. Beim Erstellen eines Moduls kann dies als Verschieben aller zugehörigen Funktionen in eine Datei interpretiert werden.
Nun sehen wir ein Beispiel. Stellen Sie sich vor, alle Dateien befinden sich in demselben Verzeichnis:
Datei: printer.js
"use strict";
exports.printHelloWorld = function (){
console.log("Hello World!!!");
}
Eine andere Art der Verwendung von Modulen:
Datei animals.js
"use strict";
module.exports = {
lion: function() {
console.log("ROAARR!!!");
}
};
Datei: app.js
Führen Sie diese Datei aus, indem Sie in Ihr Verzeichnis gehen und node app.js
eingeben: 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!!!"
Importe in ES6 verwenden
Node.js ist gegen moderne Versionen von V8 gebaut. Durch die Aktualisierung der neuesten Versionen dieser Engine stellen wir sicher, dass neue Funktionen der JavaScript-Spezifikation ECMA-262 den Entwicklern von Node.js zeitnah zur Verfügung gestellt werden und dass die Leistung und Stabilität ständig verbessert werden.
Alle Funktionen von ECMAScript 2015 (ES6) sind in drei Gruppen für Versand-, Bereitstellungs- und Statusfeatures unterteilt:
Alle Versandfunktionen, die V8 für stabil hält, sind standardmäßig in Node.js aktiviert und erfordern KEINE Laufzeitkennzeichen. Inszenierte Features, bei denen es sich um beinahe abgeschlossene Features handelt, die vom V8-Team nicht als stabil angesehen werden, erfordern ein Laufzeitflag: --harmony. In Bearbeitung befindliche Features können einzeln durch das jeweilige Harmonieflag aktiviert werden, obwohl dies nur zu Testzwecken dringend empfohlen wird. Hinweis: Diese Flags werden von V8 verfügbar gemacht und können sich ohne Abmahnungsbenachrichtigung ändern.
Derzeit unterstützt ES6 Import-Anweisungen nativ. Hier klicken
Wenn wir also eine Datei namens fun.js
...
export default function say(what){
console.log(what);
}
export function sayLoud(whoot) {
say(whoot.toUpperCase());
}
… Und wenn es eine andere Datei namens app.js
in der wir unsere zuvor definierten Funktionen verwenden möchten, gibt es drei Möglichkeiten, sie zu importieren.
Standard importieren
import say from './fun';
say('Hello Stack Overflow!!'); // Output: Hello Stack Overflow!!
Importiert die say()
Funktion, da sie in der Quelldatei als Standardexport markiert ist ( export default …
).
Genannte Importe
import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.
Benannte Importe ermöglichen es uns, genau die Teile eines Moduls zu importieren, die wir tatsächlich benötigen. Wir tun dies, indem wir sie explizit benennen. In unserem Fall benennen Sie sayLoud
innerhalb der Import-Anweisung in geschweiften Klammern.
Gebündelter Import
import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!
Wenn wir alles haben wollen, ist dies der Weg. Durch die Verwendung der Syntax * as i
mit der import
Anweisung ein Objekt i
, das alle Exporte unseres fun
Moduls als entsprechend benannte Eigenschaften enthält.
Pfade
Beachten Sie, dass Sie Ihre Importpfade explizit als relative Pfade markieren müssen, auch wenn sich die zu importierende Datei in demselben Verzeichnis befindet wie die Datei, in die Sie mit ./
importieren. Importiert von unpräfixierten Pfaden wie
import express from 'express';
wird in den lokalen und globalen node_modules
Ordnern node_modules
und gibt einen Fehler aus, wenn keine passenden Module gefunden werden.
Exportieren mit ES6-Syntax
Dies ist das Äquivalent des anderen Beispiels, verwendet jedoch stattdessen ES6.
export function printHelloWorld() {
console.log("Hello World!!!");
}