Sie sind hier

require.js

Eintrag zuletzt aktualisiert am: 22.09.2014

require.js ist eine JavaScript-Bibliothek, um Module in eigenständigen JavaScript-Dateien einzubinden. Require.js wird insbesondere in node.js verwendet.

Nutzen von require.js

Von André Krämer

Moderne Webanwendungen beinhalten in der Regel einen großen Anteil an clientseitigem JavaScript Quelltext. Ab einer gewissen Größe wird dies problematisch. Entweder werden die zugrundeliegenden JavaScript Dateien so umfangreich, dass sie nicht mehr überblickt werden können, oder der Quelltext wird in eine Vielzahl kleiner Dateien aufgebrochen. Zunächst klingt diese Aufteilung recht gut, in der Praxis ist sie jedoch problematisch.

JavaScript Quelltext Dateien müssen nämlich im HTML Text einzeln verwiesen werden. Dabei ist es wichtig, die Dateien in der richtigen Reihenfolge einzubinden. Der Grund hierfür ist, dass die verschiedenen JavaScript Dateien meist Abhängigkeiten untereinander haben. Werden die Dateien nun nicht in der korrekten Reihenfolge geladen, führt dies dazu, dass die abhängigen Scripte nur fehlerhaft ausgeführt werden können.
Die Lösung für dieses Problem sieht unter anderen Programmierumgebungen zumeist so aus, dass zusammengehöriger Quelltext in Modulen zusammengefasst wird. Diese Module können dann Abhängigkeiten an andere Module angeben. Im Kontext einer .NET-Anwendung wäre ein solches Modul zum Beispiel eine Assembly, die, wiederum mit der Hilfe von Referenzen, Abhängigkeiten auf andere Assemblies ausdrücken kann.
Unter JavaScript gibt es hierfür kein in der Sprache eingebautes Konzept. Zwar gibt es gängige Muster, um Module zu erzeugen, allerdings fehlt die Möglichkeit, Abhängigkeiten zu deklarieren.

Abhilfe schafft an dieser Stelle die „Asynchronous Module Definition (AMD) API“ Spezifikation. In dieser Spezifikation ist beschrieben, wie Module so definiert werden können, dass sowohl das Modul, als auch seine Abhängigkeiten asynchron geladen werden können. Die in der AMD Spezifikation beschriebenen Techniken eignen sich besonders für Browseranwendungen.

Eine weit verbreitete Implementierung der Spezifikation ist die quelloffene Bibliothek RequireJS. Sie steht unter einer Doppellizenz, nämlich MIT und new BSD, so dass der Entwickler die Lizenz wählen kann, die am besten zu seiner Anwendung passt. RequireJS ist sowohl in der Lage, einfache JavaScript Dateien, als auch darin definierte Module zu laden, und die deklarierten Abhängigkeiten korrekt aufzulösen.

Der Hauptnutzen der Bibliothek liegt also im Laden von JavaScript Quelltexten. Zusätzlich bringt RequireJS noch das Optimierungswerkzeug r.js mit, welches JavaScript Dateien zur besseren Performance kombinieren und minimieren kann. Moduldeklarationen und definierte Abhängigkeiten können nach der Optimierung immer noch von RequireJS aufgelöst werden. Bei anderen Optimierungswerkzeugen ist dies nicht zwangsläufig der Fall. Deshalb sollte RequireJS stets mit dem hauseigenen Optimierer genutzt werden. Dieser setzt jedoch eine Installation von node.js auf dem Entwicklungssystem voraus.


.