JavaScript hat keine eingebaute Unterstützung für Module, aber die Community hat beeindruckende Workarounds geschaffen. Um Module zu verwalten, können Sie sogenannte Paketmanager verwenden, die die Erkundung, Installation, Abhängigkeitsverwaltung und mehr übernehmen.
Die beiden wichtigsten (und leider inkompatiblen) Standards für JavaScript-Module sind:
Die dominante Inkarnation dieses Standards sind Node.js-Module (Node.js-Module haben einige Funktionen, die über CJS hinausgehen). Zu den Merkmalen gehören
Die beliebteste Implementierung dieses Standards ist RequireJS. Zu den Merkmalen gehören
eval() oder einen statischen Kompilierungsschritt zu funktionierenWenn es um Paketmanager geht, ist npm (Node Packaged Modules) die kanonische Wahl für Node.js. Für Browser sind (unter anderem) zwei Optionen beliebt:
Für die normale Webentwicklung sollten Sie ein Modulsystem wie RequireJS oder Browserify verwenden. Manchmal möchten Sie aber auch einfach einen schnellen Hack zusammenstellen. Dann kann das folgende einfache Modulmuster helfen:.
varmoduleName=function(){functionprivateFunction(){...}functionpublicFunction(...){privateFunction();otherModule.doSomething();// implicit import}return{// exportspublicFunction:publicFunction};}();
Das Vorherige ist ein Modul, das in der globalen Variablen moduleName gespeichert ist. Es tut Folgendes
otherModule)privateFunctionpublicFunctionUm das Modul auf einer Webseite zu verwenden, laden Sie einfach seine Datei und die Dateien seiner Abhängigkeiten über <script>-Tags.
<scriptsrc="modules/otherModule.js"></script><scriptsrc="modules/moduleName.js"></script><scripttype="text/javascript">moduleName.publicFunction(...);</script>
Wenn beim Laden eines Moduls keine anderen Module aufgerufen werden (was bei moduleName der Fall ist), spielt die Reihenfolge, in der die Module geladen werden, keine Rolle.
Hier sind meine Kommentare und Empfehlungen