Module in Node.js

Die Node.js-Umbebung verfügt über ein einfaches Modul-System. Ein Modul ist dabei ein Programm dessen Bestimmung darin liegt, von einem anderem Programm aus aufgerufen und verwendet zu werden.

Zum einem besitzt Node.js bereits Basis-Module die fest in die Umgebung integriert sind. Und zum anderem können auch weitere Module nachinstalliert, oder gar selbst geschrieben werden. Im folgenden gehe ich auf alle 3 Arten von Modulen genauer ein.

Basis-Module #

Alle Basis-Module sind Funktions-Biblioteken, die grundlegende Aufgaben wie z.B. den Umgang mit dem Betriebsystem, Netzwerk-Technologien oder Verschlüsselungen abdecken.

Um ein Modul in ein Node.js-Programm zu laden, verwendet man die Funktion require(). Sie erwartet als Parameter einen String, der den Pfad des Modules enthält, im Falle von Basis-Modulen reicht dazu der Name.

Beispiel #

Das folgende Beispiel schreibt den Namen der Plattform, unter der es ausgeführt wird, in die Konsole. Dabei wird das Basis-Modul os verwendet:

var os = require('os');
var platform = os.platform();
console.log(platform);

In der ersten Zeile wird in die Variable os das gleichnamige Modul os geladen. In der zweiten Zeile wird der Name der Plattform mit der Funktion os.platform() ermittelt, und in die Variable platform gespeichert. Und in der dritten Zeile wird die Variable platform nun in die Konsole geschrieben, dazu wird die Funktion console.log() verwendet.

Module installieren mit NPMnpm

Bei der Installation von Node.js wird standardmäßig der Paketmanager NPM (Abkürzung für Node Packaged Modules) mit installiert. Er ermöglich das einfache installieren, verwalten und veröffentlichen von Modulen. Abhängigkeiten von Modulen untereinander werden beachtet: benötigt ein Modul ein anderes Modul, wird es bei der Installation gleich mit installiert.

Während die meisten Basis-Module nur grundlegende Bereiche abdecken, können wir nachinstallierte Modulen auch für spezielle Einsatzgebiete verwenden. Häufig basieren diese auf den Basis-Modulen.

Beispiel #

Als Beispiel wollen wir die Konsolenausgabe farblich hervorheben, wozu wir das Modul colors verwenden.

Um das Modul zu verwenden, muss es zunächst installiert werden. Dazu nehmen wir den Konsolen-Befehl npm install, der ein Modul in angewähltem Verzeichnis installiert:

npm install colors

Nach erfolgreich-abgeschlossener Installation können wir das soeben installierte Modul verwenden. Unser Beispiel-Code sieht wie folgt aus:

var colors = require('colors');
console.log('Ein standard Text');
console.log('Ein roter Text'.red);
console.log('Und ein Regenbogen'.rainbow);

nodejs-colorsIn der ersten Zeile wird das Modul colors in die gleichnamige Variable colors geladen. In der zweiten, dritten und vierten Zeile wird die Funktion console.log() aufgerufen. Beim ersten mal mit der standard-Textfarbe, beim zweiten mal in roter- und beim dritten mal in Regenbogen-Farbe.

Wenn wir nun das Programm ausführen, bekommen wir die drei Zeilen Text in der Konsole angezeigt (siehe Screenshot). Weitere Node.js-Module findest du hier.

Module selbst schreiben #

Als letztes wollen wir ein eigenes Node.js-Modul schreiben, wozu innerhalb eines Modules das Objekt exports zur Verfügung steht. In der Dokumentation befindet sich dazu das Beispiel-Modul circle.js:

var PI = Math.PI;

exports.area = function (r) {
  return PI * r * r;
};

exports.circumference = function (r) {
  return 2 * PI * r;
};

Dieses Modul stellt die zwei Funktionen area() und circumference() bereit. Es kann beispielsweise in dem Programm foo.js aufgerufen werden:

var circle = require('./circle.js');
console.log( 'The area of a circle of radius 4 is '
           + circle.area(4));

Im Unterschied zu den Basis- oder nachinstallierten Modulen, müssen wir bei selbst geschriebenen Modulen nicht nur den Namen, sondern auch den Pfad in dem sich das Modul befindet an die Funktion require() übergeben. Da sich im Beispiel das Modul circle.js im selbem Verzeichnis wie foo.js befindet, übergeben wir in der ersten Zeile an die Funktion require() den Dateipfad ./circle.js.

module.exports #

Falls das Modul jedoch nur eine Funktion enthalten soll, oder man aus sonstigen Gründen Zugriff auf das komplette Exports-Objekt braucht, kann man anstelle von exports die Variable module.exports verwenden.

Auch hierfür gibt es ein Beispiel, das Modul square.js:

module.exports = function(width) {
  return {
    area: function() {
      return width * width;
    }
  };
}

Diesmal kann die Variable square direkt als Funktion aufgerufen werden, was in der zweiten Zeile geschieht:

var square = require('./square.js');
var mySquare = square(2);
console.log('The area of my square is ' + mySquare.area());
VN:F [1.9.22_1171]
Bewertung: 3.4/5 (12 Bewertungen)
Module in Node.js, 3.4 out of 5 based on 12 ratings
Regelmäßige Beiträge über Node.js

nodecodeAbonniere den kostenlosen NodeCode-Newsletter, und bleibe auf dem laufenden über neue Beiträge zum Thema Node.js. Darunter:

  • Informationen und Neuigkeiten rund um Node.js und zugehörigen Modulen
  • Vorstellung von interessanten Frameworks und Bibliotheken
  • Anleitungen und Tutorials zu Node.js und weiterführenden Technologien
  • Sowie vieles mehr...

schon 3 Kommentare gehe zum kommentieren

  1. Paddl /

    hey,

    erstmal: super tutorials here!!
    zweitens: ich habe absolut keinen output bei npm egal ob npm install oder sonst ieinem befehl…die konsole geht einfach in die nächste zeile und das wars dann
    ich hoffe du hast ne idee..

    Grüße, Paddl

    1. NodeCode / Beitrags-Autor

      Funktionieren denn normale Konsolen-Befehle wie z.B. ping nodecode.de?

      Falls ja, liegt es an den Node.js/NPM-Befehlen und es wurden Node.js und/oder NPM scheinbar nicht richtig installiert. Versuche in diesem Fall einfach, Node.js und NPM erneut zu installieren.

      Falls nein, liegt es hingegen an der Konsole, und es scheint damit etwas nicht zu stimmen. In diesem Fall stellen sich die Fragen: Welches Betriebsystem verwendest du denn? Und welche Konsole? Bist du sicher, dass du die Befehle auch in die richtige Konsole des Betriebsystems eingibst, und nicht z.B. in die Node.js-Konsole, wo nur JavaScript ausgeführt werden kann? Falls eine Meldung wie

      npm should be run outside of the node repl, in your normal shell.

      ausgegeben wird, bist du definitiv in der falschen Konsole.

      Ich hoffe, dass ich dir hiermit weiterhelfen kann.

      1. Paddl /

        Hey,
        super das direkt ne antwort kommt, hatte es mal komplett runter und wieder drauf gehauen, jetzt läuft es supper, ich werde mal die gesicherten logs durchsuchen und gucken ob ich was entdecke…
        achja, und zu der frage bei dem beitrag „Tutorial: einfacher Chat“, ob weitere solcher langen und ausfürhlichen gewollt sind: sehr gerne! Ich finde nodejs sehr interessant und hätte gerne noch so ein zwei weitere um noch n bischen geführte sicherheit zu bekommen, klasse sache!

        Grüße, Paddl

hinterlasse einen Kommentar