Heim > Web-Frontend > js-Tutorial > React-Router4 arbeitet mit Webpack require.ensure zusammen, um asynchrones Laden zu implementieren (ausführliches Tutorial).

React-Router4 arbeitet mit Webpack require.ensure zusammen, um asynchrones Laden zu implementieren (ausführliches Tutorial).

亚连
Freigeben: 2018-06-11 15:10:56
Original
1483 Leute haben es durchsucht

In diesem Artikel wird hauptsächlich das Beispiel von React-Router4 vorgestellt, um asynchrones Laden zu erreichen. Es ist sehr praktisch, wie man asynchrones Laden implementiert , die meisten davon basieren auf der Implementierung von require.ensure des Webpacks

Die erste besteht darin, require.ensure selbst zu verwenden,

Die zweite Möglichkeit besteht darin, den Loader zu verwenden, um es zu implementieren

Heute sprechen wir über die Verwendung des Bundle-Loaders zur Implementierung, damit der Code eleganter wird.

Zuerst müssen Sie den Bundle-Loader installieren. Ob Sie npm oder Yarn verwenden, hängt davon ab, welche Paketverwaltung Sie verwenden.

Das Folgende erfordert eine bundle.js

import React, { Component } from 'react';
export default class Bundle extends Component {
  constructor(props) {
    super(props);
    this.state = {
      mod: null
    };
  }

  componentWillMount() {
    this.load(this.props);
  }

  componentWillReceiveProps(nextProps) {
    if (nextProps.load !== this.props.load) {
      this.load(nextProps);
    }
  }

  load(props) {
    this.setState({
      mod: null
    });
    props.load(mod => {
      this.setState({
        mod: mod.default ? mod.default : mod
      });
    });
  }

  render() {
    return this.state.mod ? this.props.children(this.state.mod) : null;
  }
}
Nach dem Login kopieren

und anschließend den Import von bundle.js sowie den Import der Dateien, die asynchron sein müssen, aber Sie müssen

bundle-loader?lazy&name=[name]!
Nach dem Login kopieren

hinzufügen davor, zum Beispiel:

import Bundle from './components/bundle.js';
import ListComponent from 'bundle-loader?lazy&name=[name]!./file/List.jsx';
Nach dem Login kopieren

Das Folgende ist die Konfiguration des Hinzufügens von Routing:

<Route path="/list" component={List} />
Nach dem Login kopieren

und der chunkFilename der konfigurierten Ausgabe

chunkFilename: &#39;[name]-[id].[chunkhash:4].bundle.js&#39;
Nach dem Login kopieren

chunkFilename Nach der Konfiguration Der Name der asynchron geladenen Datei lautet wie folgt: Die obige Benennungsmethode zeigt, dass es sich um die vom Webpack generierte Nummer handelt, wenn sie nicht konfiguriert ist.

Nachdem das Obige konfiguriert ist, ist es Zeit, das Bundle zu verwenden. Sie sehen, dass die auf der Route konfigurierte Komponente der Liste entspricht, also müssen wir eine Liste schreiben:

const List = (props) => (
  <Bundle load={ListComponent}>
    {(List) => <List {...props}/>}
  </Bundle>
);
Nach dem Login kopieren

Das Obige ist Ich habe es für alle zusammengestellt und hoffe, dass es in Zukunft für alle hilfreich sein wird.

Verwandte Artikel:

So implementieren Sie das Wasserfall-Flow-Plug-in mit JS

So implementieren Sie die Funktion zum Konvertieren von HTML in PDF in JS

So implementieren Sie die Pasteboard-Kopierfunktion mit JS

So implementieren Sie Offset und einheitliche Animation in JS

So implementieren Sie das Zusammenführen von Tabellenzellen in Bootstrap

So implementieren Sie das Abrufen des ersten Werts im Auswahl-Dropdown-Feld in JavaScript

in AngularJS So erhalten und zeigen Sie das Passwort in Echtzeit an

Das obige ist der detaillierte Inhalt vonReact-Router4 arbeitet mit Webpack require.ensure zusammen, um asynchrones Laden zu implementieren (ausführliches Tutorial).. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage