国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

在react-router中進(jìn)行代碼拆分

lolomaco / 669人閱讀

摘要:包括在中也是可以使用。下面是的語法接受三個(gè)參數(shù)第一個(gè)參數(shù)是一個(gè)數(shù)組,代表了當(dāng)前進(jìn)來的模塊的一些依賴第二個(gè)參數(shù)就是一個(gè)回調(diào)函數(shù)。其中需要注意的是,這個(gè)回調(diào)函數(shù)有一個(gè)參數(shù),通過這個(gè)就可以在回調(diào)函數(shù)內(nèi)動(dòng)態(tài)引入其他模塊。

隨著react項(xiàng)目的迭代開發(fā),會(huì)發(fā)現(xiàn)build 下靜態(tài)文件包的體積會(huì)越來越臃腫,首次瀏覽網(wǎng)頁,白屏或loading時(shí)間越來越長(zhǎng),所以代碼拆分非常必要:

一、 react-loadable 組件拆分:
 安裝:
npm install react-loadable -S;


使用方法: App組件中導(dǎo)入 react-loadable組件,app.js 中引入一下代碼

import Loadable from "react-loadable";
import Loading from "./my-loading-component";

const LoadableComponent = Loadable({
  loader: () => import("./my-component"),
  loading: Loading,
});

export default class App extends React.Component {
  render() {
    return ;
  }
}

Loading 組件內(nèi)容:
import React from "react"

    export default () => {
        return 
Loading......
}
二、異步函數(shù)拆分

創(chuàng)建異步組件:
在src目錄下創(chuàng)建異步組件 AsyncComponent

import React, { Component } from "react";
export default function asyncComponent(importComponent) {

class AsyncComponent extends Component {
    constructor(props) {
        super(props);

        this.state = {
            component: null
        };
    }
    async componentDidMount() {
        const { default: component } = await importComponent();

        this.setState({
            component: component
        });
    }

    render() {
        const Com = this.state.component;

        return (Com ?  : null)
    }
}

return AsyncComponent;

}

使用異步組件

我們將使用它asyncComponent來動(dòng)態(tài)導(dǎo)入我們想要的組件。

const Home = asyncComponent(() => import("./components/Home"));
而不是靜態(tài)導(dǎo)入我們的組件。

import Home from "./components/Home";

實(shí)例:

import React, { Component } from "react";
import "./App.css";
import { Provider } from "react-redux"
import store from "./store"
import { HashRouter as Router, Switch, Route } from "react-router-dom"
import Home from "./Home"
import { AppContainer } from "react-hot-loader";

import asyncComponent from "./AsyncComponent"
const Abc= asyncComponent(() => import("./Abc"));
const Bac = asyncComponent(() => import("./Bac"));

class App extends Component {
static state = {

}
static submint = () => {

}

render() {

return (
  
    
      
        
          
          
          
        
      
    
  
);

}
}

export default App;

三、require.ensure() 方法

在webpack 2的官網(wǎng)上寫了這么一句話:
require.ensure() is specific to webpack and superseded by import().
所以,在webpack 2里面應(yīng)該是不建議使用require.ensure()這個(gè)方法的。但是目前該方法仍然有效,所以可以簡(jiǎn)單介紹一下。包括在webpack 1中也是可以使用。下面是require.ensure()的語法:
require.ensure(dependencies: String[], callback: function(require), errorCallback: function(error), chunkName: String)
require.ensure()接受三個(gè)參數(shù):
第一個(gè)參數(shù)dependencies是一個(gè)數(shù)組,代表了當(dāng)前require進(jìn)來的模塊的一些依賴;

第二個(gè)參數(shù)callback就是一個(gè)回調(diào)函數(shù)。其中需要注意的是,這個(gè)回調(diào)函數(shù)有一個(gè)參數(shù)require,通過這個(gè)require就可以在回調(diào)函數(shù)內(nèi)動(dòng)態(tài)引入其他模塊。值得注意的是,雖然這個(gè)require是回調(diào)函數(shù)的參數(shù),理論上可以換其他名稱,但是實(shí)際上是不能換的,否則webpack就無法靜態(tài)分析的時(shí)候處理它;

第三個(gè)參數(shù)errorCallback比較好理解,就是處理error的回調(diào);

第四個(gè)參數(shù)chunkName則是指定打包的chunk名稱。

因此,require.ensure()具體的用法如下:

require.ensure([], require => {
let chat = require("/components/chart");
someOperate(chat);
}, error => {
console.log("failed");
}, "mychat");
});

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/101861.html

相關(guān)文章

  • react-router4 +react-loadable 實(shí)現(xiàn)Code Splitting

    摘要:之前在中文官方文檔使用的是。實(shí)現(xiàn)按需加載,升級(jí)之后,這個(gè)方法就走不通了。之后看了的官網(wǎng),按需加載只需要神器。 之前在react-router中文官方文檔使用的是require。ensure實(shí)現(xiàn)按需加載,升級(jí)之后,這個(gè)方法就走不通了。之后看了react-router的官網(wǎng),按需加載只需要神器 react-loadable 。react-loadable的好處: 基于import()的自...

    BaronZhang 評(píng)論0 收藏0
  • 關(guān)于react-router的幾種配置方式

    摘要:本文給大家介紹的是相比于其他框架更靈活的配置方式,大家可以根據(jù)自己的項(xiàng)目需要選擇合適的方式。標(biāo)簽的方式下面我們看一個(gè)例子當(dāng)為時(shí)渲染我們可以看到這種路由配置方式使用標(biāo)簽,然后根據(jù)找到對(duì)應(yīng)的映射。 路由的概念 路由的作用就是將url和函數(shù)進(jìn)行映射,在單頁面應(yīng)用中路由是必不可少的部分,路由配置就是一組指令,用來告訴router如何匹配url,以及對(duì)應(yīng)的函數(shù)映射,即執(zhí)行對(duì)應(yīng)的代碼。 react...

    劉永祥 評(píng)論0 收藏0
  • 基于react+react-router+redux+socket.io+koa開發(fā)一個(gè)聊天室

    摘要:最近練手開發(fā)了一個(gè)項(xiàng)目,是一個(gè)聊天室應(yīng)用。由于我們的項(xiàng)目是一個(gè)單頁面應(yīng)用,因此只需要統(tǒng)一打包出一個(gè)和一個(gè)。而就是基于實(shí)現(xiàn)的一套基于事件訂閱與發(fā)布的通信庫。比如說,某一個(gè)端口了,而如果端口訂閱了,那么在端,對(duì)應(yīng)的回調(diào)函數(shù)就會(huì)被執(zhí)行。 最近練手開發(fā)了一個(gè)項(xiàng)目,是一個(gè)聊天室應(yīng)用。項(xiàng)目雖不大,但是使用到了react, react-router, redux, socket.io,后端開發(fā)使用了...

    NusterCache 評(píng)論0 收藏0
  • React 328道最全面試題(持續(xù)更新)

    摘要:希望大家在這浮夸的前端圈里,保持冷靜,堅(jiān)持每天花分鐘來學(xué)習(xí)與思考。 今天的React題沒有太多的故事…… 半個(gè)月前出了248個(gè)Vue的知識(shí)點(diǎn),受到很多朋友的關(guān)注,都強(qiáng)烈要求再出多些React相前的面試題,受到大家的邀請(qǐng),我又找了20多個(gè)React的使用者,他們給出了328道React的面試題,由我整理好發(fā)給大家,同時(shí)發(fā)布在了前端面試每日3+1的React專題,希望對(duì)大家有所幫助,同時(shí)大...

    kumfo 評(píng)論0 收藏0
  • react router 4

    摘要:也走了的路,咳,一切都成組件。中,你可以將各種組件及標(biāo)簽放進(jìn)組件中,它用來保持與的同步。組件下只允許存在一個(gè)子元素。參數(shù)偶爾會(huì)被使用,它更常用在無法匹配時(shí)呈現(xiàn)的空狀態(tài)。默認(rèn)為組件示例為關(guān)于為擁有優(yōu)質(zhì)的文檔,你可以查看并從中了解更多的信息 React Router V4 也走了react的路,咳,一切都成組件。例如Route、Link、Switch等都是組件。react-router和r...

    CoderBear 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

lolomaco

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<