Heim  >  Artikel  >  Web-Frontend  >  So verwenden Sie Webpack zum Laden von Modulen

So verwenden Sie Webpack zum Laden von Modulen

不言
不言Original
2018-07-04 10:03:041107Durchsuche

Dieser Artikel stellt hauptsächlich vor, wie Webpack Module lädt. Ich werde ihn jetzt mit Ihnen teilen und als Referenz verwenden.

Webpack erfreut sich bei Entwicklern als Modulpaketierungstool in der Frontend-Entwicklung großer Beliebtheit. Seine umfangreichen Loader ermöglichen die Implementierung einer Vielzahl von Funktionen. In diesem Artikel wird Webpack zum Packen einer JS-Datei verwendet und gezeigt, wie Webpack jedes Modul lädt.

Zwei einfache Quelldateien

Um die Analyse des Prinzips des Webpack-Lademoduls zu erleichtern, haben wir zwei Dateien vorbereitet :

hello.js

const hello = {
 say: arg => {
  console.info('hello ' + arg || 'world');
 }
};

export default hello;

index.js

import Hello from './hello';

Hello.say('man');

index .js dient als Eintragsdatei und referenziert das hello.js-Modul.

Webpack-Paketierung

Führen Sie webpack index.js bundle.js in der Befehlszeile aus, um die Eintragsdatei zu packen und ein Bundle zu generieren. js, die allgemeine Struktur ist (zur besseren Lesbarkeit habe ich etwas überflüssigen Code gelöscht):

Wie Sie sehen können, endet die endgültig generierte Datei mit ( Funktion (Module) {})([Modul 1, Modul 2]). Die von uns definierten Module werden in anonyme Funktionen gepackt und dann in Form eines Arrays an eine anonyme Funktion (Module) {} übergeben Funktion Eine __webpack_require__()-Funktion wird definiert, um das Modul index.js durch die Funktion return __webpack_require__(__webpack_require__.s = 0);

__webpack_require__( ) zu laden

Diese Funktion empfängt eine Modul-ID als Parameter, die der Index jedes Moduls im Array ist,

function __webpack_require__(moduleId) {
  /******/
  /******/ // Check if module is in cache
  /******/
  if (installedModules[moduleId]) {
   /******/
   return installedModules[moduleId].exports;
   /******/
  }
  /******/ // Create a new module (and put it into the cache)
  /******/
  var module = installedModules[moduleId] = {
   /******/
   i: moduleId,
   /******/
   l: false,
   /******/
   exports: {}
   /******/
  };
  /******/
  /******/ // Execute the module function
  /******/
  modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
  /******/
  /******/ // Flag the module as loaded
  /******/
  module.l = true;
  /******/
  /******/ // Return the exports of the module
  /******/
  return module.exports;
  /******/
 }

InstalledModules wird zum Zwischenspeichern ausgeführter Module verwendet. Führen Sie das Modul über module[moduleId].call() aus und geben Sie schließlich die Exporte des Moduls zurück.

Vom Modul akzeptierte Parameter

Nehmen Sie das hello.js-Modul als Beispiel

 (function (module, __webpack_exports__, __webpack_require__) {

  "use strict";
  const hello = {
   say: arg => {
    console.info('hello ' + arg || 'world');
   }
  };

  /* harmony default export */
  __webpack_exports__["a"] = (hello);

  /***/
 })

Webpack übergibt module, __webpack_exports__, __webpack_require__ drei Parameter an das Modul. Die ersten beiden werden zum Exportieren von Variablen im Modul verwendet, und der dritte Parameter ist die Referenz von __webpack_require__() , die zuvor eingeführt wurde Wird zum Importieren anderer Module verwendet.

Das Obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, er wird für das Studium aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website.

Verwandte Empfehlungen:

So erstellen Sie ein React-Projekt-Framework basierend auf Webpack4

Drei Möglichkeiten, Komponenten in React zu erstellen und ihre Unterschiede

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Webpack zum Laden von Modulen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn