2016-03-22 5 views
0

Ich nähere mich zum ersten Mal den Modulen und bin ein wenig verwirrt.Modulsystem vs. Modulformat

Ich lese aus verschiedenen Dokumenten, dass es mehrere Module Systeme, wie commonjs (sync) und requirejs (AMD) gibt. Von ES6 hat plain javascript sein eigenes Modul sys, das auf commonjs basiert.

Dann begann ich webpack des Studiums, dass löst mit Commonjs Abhängigkeit oder requirejs Modulformate, und von hier beginnt meine Verwirrung: soweit ich verstehe, diese beiden sind Modulsysteme, sie sind entworfen, um die Abhängigkeiten Baum zu lösen allein; ist es ihr Zweck.

Welchen Sinn hat es, das commonjs/requirejs-Format (aka Syntax) zu verwenden und dann Webpack zu implementieren, um das Diagramm aufzulösen?

Antwort

0

CommonJS und AMD sind beide Runtime-Modulsysteme. Webpack kompiliert Ihren Code, also verwenden Sie ihn nicht, um das Diagramm speziell aufzulösen, mit dem Sie einen Build einer Anwendung aus Quelldateien erstellen. Um dies zu erreichen, "versteht" webpack beide Arten von Modulen, so dass es Ihren Code analysieren, Abhängigkeiten identifizieren und entsprechend bündeln und optimieren kann.

Webpack unterstützt Dinge, die die ursprünglichen Modulsysteme nicht bieten: Sie können dynamischere Ausdrücke verwenden, um das Modul darzustellen, das Sie benötigen; Sie können das require Auflösungsverhalten selbst erweitern; Sie können eine asynchrone Laufzeit laden unter Verwendung seiner require.ensure Syntax angeben. Der Webpack-Autor könnte ein neues Modulsystem zur Unterstützung dieser zusätzlichen Funktionen definiert haben, aber dann müssten Sie alle vorhandenen Quellen (und alle Module von Drittanbietern) neu schreiben, um das Build-Tool unterzubringen. Stattdessen unterstützt webpack alle Module, die Sie bereits verwenden, und bietet Ihnen zusätzliche Tools für komplexere Build-Anforderungen.

+0

Laufzeit-Modul-System bedeutet, dass nur zur Laufzeit benötigte Module geladen werden? – Nemus

+0

@Nemus gut, ja. Ich meinte, dass CommonJS und AMD beide Mechanismen sind, die zur Laufzeit von Ihrem Anwendungscode verwendet werden sollen. Im Gegensatz zu webpack, das Ihren Code analysiert und in etwas Neues verwandelt. –

Verwandte Themen