国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

react開發中如何使用require.ensure加載es6風格的組件

2024-05-06 15:17:25
字體:
來源:轉載
供稿:網友

其實用的babel,在瀏覽器端就應該可以加載,之前少了個default:

require.ensure([],(require) => {     let A = require('./a.js').default;})

以下方式也可以,但是比較low,可以作廢了:

1、問題提出:想通過require.ensure加載es6風格的模塊?

2、出現問題:import方式本身就是靜態設計方式。如果require進來的是commonjs模塊或者amd則沒問題,但項目只想es6一個書寫風格,行嗎?

遺憾的是:一般語言編譯工具(如babel),不支持直接require一個es6風格的React組件。

怎么辦??

3、react代碼分割方式:

react代碼分割常見使用router方式,但是單頁面應用,不打算router下,可以用require.ensure進行按需加載

react的api在此:https://webpack.github.io/docs/code-splitting.html

文檔中并沒有實例,而且現階段,大部分程序已經完全按照es6風格的代碼。

那么怎樣讓es6模塊也能通過require呢?

先看結論:在es6方式書寫的模塊底部增加一句module.exports=yourclassName

例如:module.exports = Hello;

4、代碼舉例:

1)Container模塊如下:

import React, {Component} from 'react';export default class Container extends Component {  constructor() {    super();    this.state = {      currentComponent: null    }  }  doSomething = () => {    require.ensure(['./app2'], (require) => {      const Comp = require('./app2');      this.setState({        currentComponent: <Comp/>      })    })  };  render() {    return (      <div>        <span onClick={this.doSomething} style={{border: "1px solid #000"}}>點擊后,按需加載如下模塊</span>        {this.state.currentComponent}      </div>    )  }}

2)app2模塊如下

注意:在es6方式寫的模塊的最底下增加一句:module.exports = Hello;即可

或者app2直接按照commonjs規范或者是amd、cmd規范書寫也成。

import React from 'react'export default class Hello extends React.Component {  render(){    return (      <div>Hello</div>    )  }}//warning:這一句必須加上,因為在require.ensure中使用了require引入模塊module.exports = Hello;

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持錯新站長站。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 遂宁市| 博乐市| 两当县| 漳州市| 麟游县| 江口县| 南昌县| 万年县| 荣昌县| 东乡族自治县| 南康市| 曲松县| 桂林市| 梓潼县| 始兴县| 星子县| 河间市| 尖扎县| 澄江县| 辉县市| 介休市| 赤水市| 桐庐县| 苗栗市| 河池市| 伊宁县| 金华市| 随州市| 通州市| 伊吾县| 寿宁县| 华容县| 台东市| 潞城市| 烟台市| 天台县| 肃宁县| 镇雄县| 凤翔县| 万州区| 灌阳县|