Module in JavaScript
Dieser Artikel erklärt Module in JavaScript.
YouTube Video
Module in JavaScript
Module in JavaScript sind eine Möglichkeit, Code zu organisieren und ihn in wiederverwendbare Komponenten zu unterteilen. Durch die Verwendung von Modulen werden die Lesbarkeit und Wartbarkeit des Codes verbessert, und dieselbe Funktionalität kann in anderen Projekten wiederverwendet werden. Hier erklären wir verschiedene Modulsysteme, vom Konzept der Module bis hin zu spezifischen Anwendungsbeispielen.
Das Konzept von JavaScript-Modulen
JavaScript hatte ursprünglich kein Modulsystem. Mit zunehmender Größe der Anwendungen wurde die Modularisierung wichtig, um Code in kleinere Einheiten zur Wiederverwendung zu unterteilen. Ein Modul ist ein Codeblock mit einer spezifischen Funktion, der unabhängig von anderem Code verwaltet werden kann und so die Aufteilung auf mehrere Dateien ermöglicht.
Haupttypen von Modulen
Es gibt mehrere Modulsysteme in JavaScript. Die am häufigsten verwendeten sind ES-Module (ESM) und CommonJS.
-
ES-Module ist ein Modulsystem, das in ECMAScript 2015 (ES6) eingeführt wurde und Module mit den Schlüsselwörtern
import
undexport
definiert. Dieses System wird sowohl auf der Clientseite (Browser) als auch auf der Serverseite (Node.js) weit verbreitet verwendet. -
CommonJS ist ein Modulsystem, das hauptsächlich in Node.js verwendet wird. Module werden mit
require
undmodule.exports
definiert, um Dateien zu importieren und zu exportieren.
Details zu ES-Modulen (ESM)
ES-Module sind das standardmäßige Modulsystem in JavaScript, das einen einfachen Austausch von Funktionalitäten zwischen Modulen ermöglicht. In Browsern und Node.js wird dieses System verwendet, um Module zu definieren und zu importieren.
export
und import
export
ist ein Schlüsselwort, um Funktionalitäten aus einem Modul nach außen bereitzustellen. import
wird verwendet, um in anderen Modulen definierte Funktionalitäten einzubinden.
Beispiel: Modul-Export
Module können in ES-Module
wie folgt exportiert werden.
1// math.mjs
2export function add(a, b) {
3 return a + b;
4}
5export function subtract(a, b) {
6 return a - b;
7}
In diesem math.mjs
-Modul werden die Funktionen add
und subtract
exportiert. Diese Funktionen können aus anderen Modulen importiert werden.
Hier ist .mjs
eine Dateiendung, die explizit auf eine JavaScript-Datei im ES-Module-Format hinweist. In Node.js bestimmt die Dateiendung, ob es sich um CommonJS
oder ES-Module
handelt. Wenn jedoch type: "module"
in der package.json
angegeben ist, werden Dateien mit der Endung .js
standardmäßig als ES-Module
behandelt.
Beispiel: Modulinport
Module können in ES-Module
wie folgt importiert werden.
1// main.mjs
2import { add, subtract } from './math.mjs';
3
4console.log(add(3, 5)); // 8
5console.log(subtract(10, 7)); // 3
Auf diese Weise können Sie mit import
Funktionen verwenden, die in anderen Dateien definiert sind.
Standardexport und benannter Export
Es gibt zwei Exportmethoden für Module. Eine ist der benannte Export, die andere ist der Standardexport.
- Benannte Exporte werden verwendet, wenn mehrere Funktionen oder Variablen aus einem Modul exportiert werden. Es können mehrere Exporte durchgeführt werden, und beim Import werden sie mit den angegebenen Namen empfangen.
1// utils.mjs
2export function sum(a, b) {
3 return a + b;
4}
5export function multiply(a, b) {
6 return a * b;
7}
1// main.mjs
2import { sum, multiply } from './utils.mjs';
3
4console.log(sum(4, 6)); // 10
5console.log(multiply(3, 5)); // 15
- Standardexport wird verwendet, wenn eine einzelne Funktion oder Klasse aus einem Modul exportiert wird. Beim Import kann sie mit einem beliebigen Namen empfangen werden.
1// greet.mjs
2export default function greet() {
3 return "Hello, World!";
4}
1// main.mjs
2import greet from './greet.mjs';
3
4console.log(greet()); // "Hello, World!"
Es ist nur ein Standardexport möglich, jedoch können mit benannten Exporten mehrere Elemente gleichzeitig exportiert werden.
Beispiel für die Verwendung auf der Client-Seite (Browser).
Beispiel: Modul-Export
Module können in ES-Module
wie folgt exportiert werden.
1// utils.js
2export function sum(a, b) {
3 return a + b;
4}
5export function multiply(a, b) {
6 return a * b;
7}
In diesem utils.js
-Modul werden die Funktionen sum
und multiply
exportiert.
Beispiel: Modulinport
Module können auf der Client-Seite wie folgt importiert werden.
1<!DOCTYPE html>
2<html lang="ja">
3<head>
4 <meta charset="UTF-8">
5 <title>ES Modules Sample in HTML</title>
6</head>
7<body>
8 <h1>ES Modules Sample</h1>
9 <div id="result"></div>
10
11 <script type="module">
12 import { sum, multiply } from './utils.js';
13
14 const result = `
15 <p>sum(3, 5) = ${sum(3, 5)}</p>
16 <p>multiply(10, 7) = ${multiply(10, 7)}</p>
17 `;
18
19 document.getElementById('result').innerHTML = result;
20 console.log(sum(3, 5)); // 8
21 console.log(multiply(10, 7)); // 70
22 </script>
23</body>
24</html>
- Durch das Setzen des
type
-Attributs des<script>
-Tags aufmodule
kann die ES-Module-Syntax wieimport
undexport
innerhalb von HTML verwendet werden. - Die
import
-Anweisung lädt das externeutils.js
und zeigt das Ergebnis an.
Details zu CommonJS
CommonJS ist ein Modulsystem, das hauptsächlich in Node.js verwendet wird. Module werden mit module.exports
und require
exportiert und importiert.
require
und module.exports
In CommonJS wird module.exports
zum Exportieren von Modulen verwendet. Außerdem wird require
verwendet, um Module aus anderen Dateien zu nutzen.
Beispiel: Modul-Export
Module können in CommonJS
wie folgt exportiert werden.
1// math.js
2module.exports = {
3 add: function(a, b) {
4 return a + b;
5 },
6 subtract: function(a, b) {
7 return a - b;
8 }
9};
Beispiel: Modulinport
Module können in CommonJS
wie folgt importiert werden.
1// main.js
2const math = require('./math.js');
3
4console.log(math.add(4, 7)); // 11
5console.log(math.subtract(9, 2)); // 7
In Node.js wird CommonJS als Standardsystem für Module verwendet, aber ES-Module werden ebenfalls unterstützt.
Dynamischer Import
In JavaScript können Module dynamisch mit import()
importiert werden. Diese Methode nutzt asynchrone Verarbeitung, um Module nach Bedarf zu laden.
Dynamische Importe können wie folgt durchgeführt werden.
1async function loadModule() {
2 const math = await import('./math.js');
3 console.log(math.add(5, 3)); // 8
4}
5
6loadModule();
Dynamischer Import ist eine Möglichkeit, die Anwendungsleistung zu verbessern. Da Module nach Bedarf geladen werden können, anstatt alles beim ersten Laden zu laden, wird die Seitendarstellungsgeschwindigkeit verbessert.
Vorteile von Modulen
-
Wiederverwendbarkeit von Code
- Modularisierter Code kann in anderen Projekten wiederverwendet werden. Durch die Erstellung von Modulen mit gemeinsamen Funktionalitäten und deren Verwendung in mehreren Anwendungen wird die Entwicklungseffizienz erheblich gesteigert.
-
Verbesserte Wartbarkeit
- Durch die Aufteilung des Codes in Module ist es einfacher, bestimmte Funktionen oder Teile zu ändern. Die Verwaltung von Code in kleinen Einheiten erleichtert das Auffinden und Beheben von Fehlern.
-
Vermeidung von Namensraumkollisionen
- Die Definition vieler Variablen und Funktionen im globalen Gültigkeitsbereich kann zu Namenskollisionen führen, aber Modularisierung verhindert dies und trägt zu einer übersichtlicheren Codebasis bei.
-
Abhängigkeitsverwaltung
- Durch die Verwendung von Modulen können die Abhängigkeiten einer Anwendung explizit verwaltet werden. Es wird klar, welches Modul von anderen Modulen abhängt, was die Code-Struktur leichter verständlich macht.
Zusammenfassung
Das Modulsystem von JavaScript ist ein leistungsstarkes Mittel, um Code zu organisieren und in wiederverwendbare Komponenten aufzuteilen. Durch das Verständnis der Unterschiede zwischen ES-Modulen und CommonJS und die Wahl des geeigneten Modulsystems basierend auf dem Projekt können Sie die Lesbarkeit und Wartbarkeit des Codes verbessern. Darüber hinaus können Sie durch die Nutzung dynamischer Importe die Anwendungsleistung optimieren.
Nutzen wir das Modulsystem, um skalierbarere und effizientere JavaScript-Anwendungen zu erstellen.
Sie können den obigen Artikel mit Visual Studio Code auf unserem YouTube-Kanal verfolgen. Bitte schauen Sie sich auch den YouTube-Kanal an.