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 相关文章推荐
javascript操作referer详细解析
Mar 10 Javascript
原生javascript模仿win8等待提示圆圈进度条
Apr 24 Javascript
jQuery实现平滑滚动页面到指定锚点链接的方法
Jul 15 Javascript
如何实现JavaScript动态加载CSS和JS文件
Dec 28 Javascript
javascript 取小数点后几位几种方法总结
Aug 02 Javascript
vue的toast弹窗组件实例详解
May 14 Javascript
详解React之父子组件传递和其它一些要点
Jun 25 Javascript
Node.js Koa2使用JWT进行鉴权的方法示例
Aug 17 Javascript
JavaScript实现的拼图算法分析
Feb 13 Javascript
JS回调函数原理与用法详解【附PHP回调函数】
Jul 20 Javascript
mock.js模拟前后台交互
Jul 25 Javascript
js绘制一条直线并旋转45度
Aug 21 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脚本
2006/11/26 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
PHP中浮点数计算比较及取整不准确的解决方法
2015/01/09 PHP
php批量删除操作(数据访问)
2017/05/23 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
判断用户的在线状态 onbeforeunload事件
2011/03/05 Javascript
JQuery文本框高亮显示插件代码
2011/04/02 Javascript
High Performance JavaScript(高性能JavaScript)读书笔记分析
2011/05/05 Javascript
模仿百度三维地图的js数据分享
2011/05/12 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
jquery实现最简单的滑动菜单效果代码
2015/09/12 Javascript
JS+CSS实现大气清新的滑动菜单效果代码
2015/10/22 Javascript
jQuery插件制作的实例教程
2016/05/16 Javascript
深入理解jQuery之防止冒泡事件
2016/05/24 Javascript
jquery获取复选框checkbox的值实现方法
2016/05/30 Javascript
JS实现页面打印功能
2017/03/16 Javascript
jQuery加密密码到cookie的实现代码
2017/04/18 jQuery
JS实现提交表单前的数字及邮箱校检功能
2017/11/13 Javascript
mpvue小程序循环动画开启暂停的实现方法
2019/05/15 Javascript
JS数组进阶示例【数组的几种函数用法】
2020/01/16 Javascript
[03:56]显微镜下的DOTA2第十一期——鬼畜的死亡先知播音员
2014/06/23 DOTA
Python打造出适合自己的定制化Eclipse IDE
2016/03/02 Python
详解python的webrtc库实现语音端点检测
2017/05/31 Python
使用Python实现博客上进行自动翻页
2017/08/23 Python
基于python 处理中文路径的终极解决方法
2018/04/12 Python
python爬虫爬取幽默笑话网站
2019/10/24 Python
Python函数的默认参数设计示例详解
2019/12/01 Python
Python开发企业微信机器人每天定时发消息实例
2020/03/17 Python
美国知名的女性服饰品牌:LOFT(洛芙特)
2016/08/05 全球购物
Kipling凯浦林美国官网:世界著名时尚休闲包袋品牌
2016/08/24 全球购物
学校七一活动方案
2014/01/19 职场文书
先进事迹报告会感言
2014/01/24 职场文书
教室标语大全
2014/06/21 职场文书
维护民族团结演讲稿
2014/08/27 职场文书