Skip to content

Instantly share code, notes, and snippets.

@Huluvu424242
Last active June 15, 2024 19:03
Show Gist options
  • Save Huluvu424242/33e5102f53d5cdcbe9616b3ba5ee7142 to your computer and use it in GitHub Desktop.
Save Huluvu424242/33e5102f53d5cdcbe9616b3ba5ee7142 to your computer and use it in GitHub Desktop.
Javascript Modul Systeme

Arten von Modul Systemen in Javascript

(Der Inhalt dieses Gist wurde initial über chatgpt erstellt - 15.06.2024)

In JavaScript gibt es hauptsächlich zwei Arten von Modulen:

  • CommonJS-Module
  • ES6-Module (ECMAScript 2015 Module System)

Diese beiden Modulsysteme unterscheiden sich in ihrer Syntax und ihrem Verhalten. Hier sind die Details zu beiden:

1. CommonJS-Module

CommonJS ist das Modulsystem, das ursprünglich in Node.js verwendet wurde. Es ist weit verbreitet und wird immer noch in vielen Node.js-Projekten verwendet.

Eigenschaften:

  • Verwenden require zum Importieren von Modulen.
  • Verwenden module.exports oder exports zum Exportieren von Modulen.
  • Wird synchron geladen, was gut für serverseitige Anwendungen ist.

Beispiel: module1.js


const myFunction = () => {
  console.log('Hello from CommonJS module');
};

main.js


const myFunction = require('./module1');
myFunction();

2. ES6-Module (ECMAScript 2015 Module System)

ES6-Module sind das standardisierte Modulsystem, das in der ECMAScript 2015-Spezifikation eingeführt wurde. Es wird sowohl in modernen Browsern als auch in Node.js unterstützt.

Eigenschaften:

  • Verwenden import zum Importieren von Modulen.
  • Verwenden export zum Exportieren von Modulen.
  • Wird asynchron geladen, was gut für clientseitige Anwendungen ist.
  • Ermöglichen statische Analysen, was Tree Shaking und Dead Code Elimination unterstützt.

Beispiel: module1.js


export const myFunction = () => {
  console.log('Hello from ES6 module');
};

main.js


import { myFunction } from './module1.js';
myFunction();

3. AMD (Asynchronous Module Definition)

AMD wird hauptsächlich in Browserumgebungen verwendet und war populär, bevor ES6-Module unterstützt wurden. RequireJS ist eine bekannte Implementierung von AMD.

module1.js


define(['dependency'], function (dependency) { const myFunction = () => { console.log('Hello from AMD module'); };

return { myFunction: myFunction }; });

main.js


require(['module1'], function (module1) {
  module1.myFunction();
});

4. UMD (Universal Module Definition)

UMD versucht, die Lücke zwischen AMD und CommonJS zu schließen und ermöglicht, dass ein Modul sowohl in Node.js als auch in Browserumgebungen verwendet werden kann.

module1.js


(function (root, factory) {
  if (typeof define === 'function' && define.amd) {
    define([], factory);
  } else if (typeof module === 'object' && module.exports) {
    module.exports = factory();
  } else {
    root.myModule = factory();
  }
}(this, function () {
  return {
    myFunction: function () {
      console.log('Hello from UMD module');
    }
  };
}));

Zusammenfassung

Die beiden Hauptmodulsysteme in JavaScript sind CommonJS und ES6-Module. Während CommonJS vor allem in Node.js verwendet wird, sind ES6-Module der Standard für moderne JavaScript-Entwicklung und werden sowohl von Browsern als auch von Node.js unterstützt. Andere Modulsysteme wie AMD und UMD sind weniger verbreitet, aber es ist nützlich, sie zu kennen, insbesondere bei der Arbeit mit älterem Code oder spezifischen Bibliotheken.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment