Es ist bereits möglich, commonjs-Module in requirejs zu konvertieren , aber ich möchte immer noch wissen, ob es möglich ist Die Umkehrung. Gibt es eine Möglichkeit, requireJS-Module in commonJS zu konvertieren, statt umgekehrt?
Ja, das ist möglich. Viele Websites, einschließlich Sound Cloud, haben ein eigenes Konvertierungstool entwickelt.
Mozilla hat ein nettes kleines Modul namens SweetJS entwickelt. Grundsätzlich können Sie Makros in JavaScript definieren. Um sie in Node.js zu verwenden, müssen Sie ihre Binärdatei verwenden, um die Makros tatsächlich zu verwenden, da sie nicht zur Laufzeit verfügbar ist.
BEARBEITEN:
Yehuda, einer der Entwickler von Ember.js , hat ein transpiler-Modul veröffentlicht.
Es ist in Ruby und nicht in JavaScript geschrieben, aber vielleicht wird es jemand umwandeln. Nichtsdestoweniger können Sie es in Node.js verwenden, indem Sie einen Ruby-Prozess abzweigen.
Ja, es ist möglich, wenn Sie uRequire verwenden, ein Tool, das ich speziell für die Konvertierung von Javascript-Modulformaten geschrieben habe - AMD / Requirejs - & gt; commonjs / nodejs und zurück (plus mehr).
Es scheint als eine triviale AST Manipulation & amp; Abhängigkeiten Auflösung @ Start, aber Modulformate sind inkompatibel in vielerlei Hinsicht abgesehen von der Syntax:
Abhängigkeit / Pfadauflösung : commonjs verwendet fileRelative (z. B. "../PersonModel"), während AMD auch package-relative (z. B. "Models / PersonModel")
Ausführungsumgebung : commonJs-Module werden synchron geladen, während AMD asynchron geladen wird (AMD hat auch die asynchrone require
version require(['dep1', dep2'], function(dep1, dep2){})
, die hauptsächlich für den Browser vorgesehen ist).
Das sind auch andere Unterschiede (zB AMD-Loader-Plugins), aber im Allgemeinen schreiben Sie gegen jedes einzelne in diesem Format. .
uRequire ermöglicht es Ihnen, in AMD oder commonJS zu schreiben und leicht zum anderen zu konvertieren (oder in UMD umzuwandeln), wodurch Sie modulares Javascript ohne den Standardcode genießen.
Manuell sollte es möglich sein.
Ein Modul require.js sieht folgendermaßen aus:
%Vor%Das Exportieren in ein CommonJs-Modul sollte nicht zu schwierig sein:
%Vor%Sie müssen keine Funktion zurückgeben, sie kann auch ein Objekt sein:
%Vor%...
%Vor%Bearbeiten: konvertieren ist ebenfalls möglich.