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!!!");
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow