React 路由懒加载

作者: a333661d6d6e | 来源:发表于2018-10-30 18:00 被阅读7次

    传统的两种方式

    import()

    符合ECMAScript提议的import()语法,该提案与普通 import 语句或 require 函数的类似,但返回一个 Promise 对象。这意味着模块时异步加载的

    webpack v2+ 使用

    使用方式

    function component() {
     return import( /* webpackChunkName: "lodash" */ 'lodash').then(_ => {
     var element = document.createElement('div');
     element.innerHTML = _.join(['Hello', 'webpack'], ' ');
     return element;
     }).catch(error => 'An error occurred while loading the component');
    }
    // 或者使用async
    async function getComponent() {
     var element = document.createElement('div');
     const _ = await import(/* webpackChunkName: "lodash" */ 'lodash');
     element.innerHTML = _.join(['Hello', 'webpack'], ' ');
     return element;
    }
    

    require.ensure

    webpack指定的使用方式

    webpack v1 v2 指定使用方式

    使用方式

    require.ensure([], function(require){
     var list = require('./list');
     list.show();
    ,'list');
    <!-- Router -->
    const Foo = require.ensure([], () => {
     require("Foo");
    }, err => {
     console.error("We failed to load chunk: " + err);
    }, "chunk-name");
    //react-router2 or 3
    <Route path="/foo" getComponent={Foo} />
    //欢迎加入全栈开发交流群一起学习交流:864305860
    

    azyload-loader

    相对于前两种,此种方式写法更为简洁。

    React 路由懒加载

    使用方式

    // webpack 配置文件中 使用lazyload-loader(必须将lazuyload-loader 放置在use的最右侧)
    module: {
     rules: [
     {
     test: /.(js|jsx)$/,,
     use: [
     'babel-loader',
     'lazyload-loader'
     ]
     },
    

    业务代码中

     // 使用lazy! 前缀 代表需要懒加载的Router
     
     import Shop from 'lazy!./src/view/Shop';
     
     // Router 正常使用
     <Route path="/shop" component={Shop} />
    

    给大家推荐一个免费的学习群,里面概括移动应用网站开发,css,html,webpack,vue node angular以及面试资源等。
    对web开发技术感兴趣的同学,欢迎加入Q群:864305860,不管你是小白还是大牛我都欢迎,还有大牛整理的一套高效率学习路线和教程与您免费分享,同时每天更新视频资料。
    最后,祝大家早日学有所成,拿到满意offer,快速升职加薪,走上人生巅峰。

    相关文章

      网友评论

        本文标题:React 路由懒加载

        本文链接:https://www.haomeiwen.com/subject/jxngtqtx.html