RequireJS - CommonJS

Das Modulformat wird von CommonJS definiert. Es wird definiert, ohne dass Browsern andere JavaScript-Umgebungen gleichgestellt werden können. Daher empfiehlt die CommonJS-Spezifikation Transportformate und eine asynchrone Anforderung . Sie können das traditionelle CommonJS-Modulformat problemlos für die Arbeit mit RequireJS konvertieren. Es werden jedoch nicht alle Module in das neue Format konvertiert. Einige der Ausnahmen sind unten aufgeführt -

  • Module mit bedingtem Code für einen erforderlichen Aufruf.
  • Module mit zirkulären Abhängigkeiten.

Manuelle Konvertierung

CommonJS-Module können mithilfe der folgenden Syntax manuell in das RequireJS-Format konvertiert werden:

define(function(require, exports, module) {
   //place CommonJS module content here
});

Konvertierungswerkzeug

Commonjs Module können durch die auf das RequireJS Format konvertiert werden r.js Projekt - Konverter - Tool, das eingebaut ist r.js Datei. Sie sollten den Pfad der zu konvertierenden Datei und den Ausgabeordner wie unten gezeigt angeben -

node r.js -convert path/to/commonjs/modules/ path/to/output

Exportierten Wert einstellen

Einige der Systeme in CommonJS ermöglichen das Festlegen des exportierten Werts durch Zuweisen des exportierten Werts als module.exports But RequireJS unterstützt jedoch die einfachere Möglichkeit, den Wert von der zur Definition übergebenen Funktion zurückzugeben. Dies hat den Vorteil, dass Sie die Argumente für Exporte und Modulfunktionen nicht benötigen, sodass Sie sie wie unten gezeigt aus der Moduldefinition entfernen können.

define(function (require) {
   var name = require('name');

   //Define the module as exporting a function
   return function () {
      name.doSomething();
   };
});

Alternative Syntax

Die alternative Möglichkeit, Abhängigkeiten anzugeben, besteht in einem Abhängigkeitsarray-Argument define () . Die Reihenfolge der Namen im Abhängigkeitsarray sollte jedoch mit der Reihenfolge der Argumente übereinstimmen, die an die Definitionsfunktion define () übergeben werden (siehe unten).

define(['name'], function (name) {
   
   return function () {
      name.doSomething();
   };
});

Laden von Modulen aus CommonJS-Paketen

Um Informationen zu Speicherort und Paketattributen zu erhalten, werden Module mithilfe von RequireJS in CommonJS-Pakete geladen, indem Sie die RequireJS-Konfiguration einrichten.

Optimierungswerkzeug

In RequireJS ist ein Optimierungstool vorhanden, mit dem die Moduldefinitionen zu optimierten Bundles für die Browserbereitstellung kombiniert werden können. Es fungiert als Befehlszeilentool, sodass Sie es als Teil der Codebereitstellung verwenden können.