react开发中如何使用require.ensure加载es6风格的组件


Posted in Javascript onMay 09, 2017

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js修改地址栏URL参数解决url参数问题
Dec 15 Javascript
jQuery中nextUntil()方法用法实例
Jan 07 Javascript
Jquery Easyui菜单组件Menu使用详解(15)
Dec 18 Javascript
使用jQuery,Angular实现登录界面验证码详解
Apr 27 jQuery
jquery.masonry瀑布流效果
May 25 jQuery
vue学习教程之带你一步步详细解析vue-cli
Dec 26 Javascript
react-native 圆弧拖动进度条实现的示例代码
Apr 12 Javascript
JavaScript设计模式之单例模式原理与用法实例分析
Jul 26 Javascript
提升node.js中使用redis的性能遇到的问题及解决方法
Oct 30 Javascript
Vue+Node服务器查询Mongo数据库及页面数据传递操作实例分析
Dec 20 Javascript
Vue+Bootstrap实现简易学生管理系统
Feb 09 Vue.js
5种 JavaScript 方式实现数组扁平化
Oct 05 Javascript
Vue2单一事件管理组件通信
May 09 #Javascript
react-router实现按需加载
May 09 #Javascript
BootStrap表单时间选择器详解
May 09 #Javascript
兼容浏览器的js事件绑定函数(详解)
May 09 #Javascript
JS触摸与手势事件详解
May 09 #Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
May 09 #Javascript
微信小程序之获取当前位置经纬度以及地图显示详解
May 09 #Javascript
You might like
PHP及Zend Engine的线程安全模型分析
2011/11/10 PHP
PHP Error与Logging函数的深入理解
2013/06/03 PHP
php无限分类使用concat如何实现
2015/11/05 PHP
PHP入门教程之数组用法汇总(创建,删除,遍历,排序等)
2016/09/11 PHP
关于使用runtimeStyle属性问题讨论文章
2007/03/08 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
appendChild() 或 insertBefore()使用与区别介绍
2013/10/11 Javascript
javascript静态页面传值的三种方法分享
2013/11/12 Javascript
采用call方式实现js继承
2014/05/20 Javascript
jQuery ajax时间差导致的变量赋值问题分析
2016/01/22 Javascript
[原创]JQuery 在表单提交之前修改 提交的值
2016/04/14 Javascript
Treegrid的动态加载实例代码
2016/04/29 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
js Canvas绘制圆形时钟教程
2017/02/06 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
jQuery实现的form转json经典示例
2017/10/10 jQuery
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
解决Vue.js应用回退或刷新界面时提示用户保存修改问题
2019/11/24 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
VueX模块的具体使用(小白教程)
2020/06/05 Javascript
AJAX XMLHttpRequest对象创建使用详解
2020/08/20 Javascript
Python全局变量用法实例分析
2016/07/19 Python
关于python导入模块import与常见的模块详解
2019/08/28 Python
Python 实现大整数乘法算法的示例代码
2019/09/17 Python
python BlockingScheduler定时任务及其他方式的实现
2019/09/19 Python
python实现xml转json文件的示例代码
2020/12/30 Python
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
武汉某公司的C#笔试题面试题
2015/12/25 面试题
酒店执行总经理岗位职责
2013/12/15 职场文书
主持人婚宴答谢词
2014/01/28 职场文书
四下基层实施方案
2014/03/28 职场文书
设备售后服务承诺书
2014/05/30 职场文书
高考励志标语
2014/06/05 职场文书
医德考评自我评价
2014/09/14 职场文书
如何利用python和DOS获取wifi密码
2021/03/31 Python
SpringBoot整合minio快速入门教程(代码示例)
2022/04/03 Java/Android