23.112015

Node.js & npm – Teil 2: Node Modul erstellen

Node.js & npm – Teil 1: Erstellung eines Pakets
Node.js & npm – Teil 2: Node Modul erstellen
Node.js & npm – Teil 3: Modul auf npmjs.com veröffentlichen

Dies ist der zweite Teil meiner Serie wie ich ein npm-Modul erstelle
und veröffentliche. Im letzten Teil ging es darum das Projekt anzulegen und
es mit einem GitHub-Projekt zu verknüpfen.

In diesem Teil geht es um den Aufbau deines Projektes.

Letztes mal habt ihr bei npm init einen "entry point" festgelegt. Der
Standardwert dafür ist index.js. Du könntest nun den gesamten Code deines
Moduls in diese Datei schreiben. Der Code wird so aber schnell sehr unübersichtlich
und sehr schwer wartbar.
Die meisten Node.js-Entwickler sind deswegen dazu übergegangen ihren
Quellcode in einem "lib"-Verzeichnis abzulegen und es auch dort in
verschiedenen Dateien zu organisieren.

In Node.js werden Codeteile mit "module.exports" von außen zugreifbar gemacht.
Alles was Du in diesem Objekt speicherst kannst Du via require einbinden.
Hier ein kleines Beispiel:


file1.js:
============

function hello() {
  console.log('hello world');
}

module.exports = hello;

files2.js
============

var hello = require('file1');
hello();

Du kannst auch ein Object module.exports zuweisen:


file1.js:
============

function JaSager() {
  this.debuǵ = true;
}

JaSager.prototype.sagJa = function() {
  console.log('Ja')
}

module.exports = JaSager;
files2.js
============

var JaSager = require('file1')

var jaSager = new JaSager();
jaSager.sagJa();

Wenn jemand dein Modul via npm install installiert und via require einbindet, bekommt
er das Objekt, das du im entry point in der index.js Datei module.exports zugewiesen hast.

Mit diesem Wissen erstellen wir in unserem Beispielprojekt "chain-request" den Ordner
lib, mit der Datei request.js. Diese soll ein instanziierbares Request Objekt zurückgeben,
welches du über index.js zugreifbar machst:


lib/request.js:
============

function Request() {

}

module.exports = Request;
index.js:
============

module.exports = require('./lib/request.js');

Herzlichen Glückwunsch, Du hast dein erstes einbindbares node-Modul erstellt. Nun musst du das
Modul natürlich noch mit Funktionalität füllen. Aber darum geht es in diesem Post ja nicht. ;)

Im nächsten Teil wirst Du lernen wie man das Modul auf npmjs.com veröffentlicht.

Node.js & npm – Teil 1: Erstellung eines Pakets
Node.js & npm – Teil 2: Node Modul erstellen
Node.js & npm – Teil 3: Modul auf npmjs.com veröffentlichen