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

首頁 > 編程 > JavaScript > 正文

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

2019-11-19 16:37:46
字體:
來源:轉載
供稿:網友

其實用的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;

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜兰县| 平山县| 河池市| 金川县| 赤壁市| 田东县| 定兴县| 浑源县| 佳木斯市| 乐昌市| 治多县| 原阳县| 东乡县| 称多县| 墨竹工卡县| 安陆市| 余干县| 大兴区| 合作市| 淅川县| 荔浦县| 沿河| 长葛市| 庆阳市| 睢宁县| 青龙| 长治市| 合山市| 桓台县| 金寨县| 和林格尔县| 南安市| 搜索| 南康市| 平泉县| 固阳县| 九江市| 从化市| 尤溪县| 滦南县| 股票|