全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

React-router中结合webpack实现按需加载实例

简要介绍:在React-router中,暴露了3个接口,如果结合webpack的code splitting,就通过切换路由实现按需加载。

1.webpack的code splitting

webpack可以通过一些方法,来实现按需加载,暴露的接口为require.ensure

require.ensure(["module-a", "module-b"], function() {
 var a = require("module-a");
 // ...
});

这个require.ensure保证了模块的异步调用,当callback回调中调用了一个模块的时候,可以实现按需加载。

2.React-router实现按需加载的接口

React-router定义了 getChildRoutes, getIndexRoute, getComponents这样3个方法,这3个方法是异步的,并且只在需要的时候调用,通过这3个方法定义的路由,我们称之为“渐进式路由匹配”,React-router在匹配到路由时,只是渐进式的加载改路由所需要的组件,这样就能实现按需加载。

(1)webpack的配置:

 output: {
    path: __dirname + '/dist/js/',
    publicPath:'/js/',
    filename: '[name].js',
    chunkFilename: '[name].[chunkhash:5].chunk.js'
  },

在这里我们加上了chunkFilename:…. 这句代码用于分割js,特别注意publicPath这个路径要与服务器的资源的路径对应,否则加载js的时候会出现404错误。

(2)通过getComponents等3个方法重新配置路由

export const routes={
 path:'/',
 getComponent(nextState,callback){
  require.ensure([],require=>{
   callback(null,require('../components/nav').default);
  },'nav');
 },
 indexRoute:{
  getComponent(nextState,callback){
   require.ensure([],require=>{
    callback(null,require('../components/examine').default);
   },'examine');
  }
 },
 childRoutes:[{
  path:'examine',
  getComponent(nextState,callback){
   require.ensure([],require=>{
    callback(null,require('../components/examine').default);
   },'examine');
   }
 },
 {
  path:'admin',
  getComponent(nextState,callback){
   require.ensure([],require=>{
    callback(null,require('../components/admin').default);
   },'admin');
  }
 },
 {
  path:'history',
  getComponent(nextState,callback){
   require.ensure([],require=>{
    callback(null,require('../components/history').default);
   },'history');
  }
 },
 {
  path:'feedback',
  getComponent(nextState,callback){
   require.ensure([],require=>{
    callback(null,require('../components/feedback').default);
   },'feedback')
  }
 }
]
};

这里我们将路由定义中的component替换成了 getComponent。

(3)最后效果:

首页时候,加载了examine.js和nav.js:

切换路由时,比如从首页切换到了商品管理,这样除了加载examine.js外,多加载了admin.js:

(4)总结:

我们看到react-router的按需加载,作用主要表现在可以减少首页请求的文件的大小。

3.注意事项:

1、require(‘components/Index').default中require方法的参数不能使用变量,只能使用字符串!

2、如果你的组件是使用es5的module.exports导出的话,那么只需要require(‘components/Index')即可。而如果你的组件是使用es6的export default导出的话,那么需要加上default!例如:require(‘components/Index').default

3、如果在路由页面使用了按需加载(require.ensure)加载路由级组件的方式,那么在其他地方(包括本页面)就不要再import了,否则不会打包生成chunk文件。简而言之,需要按需加载的路由级组件必须在路由页面进行加载。

特别是第3点,笔者就是因为这个原因导致按需加载失败,特别注意import不能在任何地方引入按需加载的组件。

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


# webpack  # react  # router  # router按需加载  # webpack按需加载react  # Vue.js中用webpack合并打包多个组件并实现按需加载  # 详解vue项目优化之按需加载组件-使用webpack require.ensure  # 浅谈vue项目优化之页面的按需加载(vue+webpack)  # vue按需加载组件webpack require.ensure的方法  # webpack学习笔记之代码分割和按需加载的实例详解  # Webpack按需加载打包chunk命名的方法  # 加载  # 按需  # 首页  # 渐进式  # 在这里  # 成了  # 就能  # 上了  # 可以通过  # 只需要  # 只在  # 可以实现  # 本页面  # 所需要  # 来实现  # 这句  # 多加  # 回调  # 大家多多  # 可以减少 


相关文章: 如何用PHP快速搭建CMS系统?  宝塔新建站点报错如何解决?  公司门户网站制作公司有哪些,怎样使用wordpress制作一个企业网站?  建站中国官网:模板定制+SEO优化+建站流程一站式指南  番禺网站制作公司哪家值得合作,番禺图书馆新馆开放了吗?  javascript基本数据类型及类型检测常用方法小结  定制建站策划方案_专业建站与网站建设方案一站式指南  如何在景安云服务器上绑定域名并配置虚拟主机?  c++ stringstream用法详解_c++字符串与数字转换利器  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  高端建站三要素:定制模板、企业官网与响应式设计优化  网站海报制作教学视频教程,有什么免费的高清可商用图片网站,用于海报设计?  python的本地网站制作,如何创建本地站点?  交易网站制作流程,我想开通一个网站,注册一个交易网址,需要那些手续?  专业公司网站制作公司,用什么语言做企业网站比较好?  在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?  如何在自有机房高效搭建专业网站?  如何在IIS中新建站点并解决端口绑定冲突?  大连 网站制作,大连天途有线官网?  音乐网站服务器如何优化API响应速度?  广州网站制作的公司,现在专门做网站的公司有没有哪几家是比较好的,性价比高,模板也多的?  如何快速登录WAP自助建站平台?  ,想在网上投简历,哪几个网站比较好?  免费制作小说封面的网站有哪些,怎么接网站批量的封面单?  制作无缝贴图网站有哪些,3dmax无缝贴图怎么调?  c++怎么用jemalloc c++替换默认内存分配器【性能】  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  惠州网站建设制作推广,惠州市华视达文化传媒有限公司怎么样?  制作表格网站有哪些,线上表格怎么弄?  网站制作员失业,怎样查看自己网站的注册者?  如何在阿里云通过域名搭建网站?  网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?  零基础网站服务器架设实战:轻量应用与域名解析配置指南  linux top下的 minerd 木马清除方法  香港服务器网站卡顿?如何解决网络延迟与负载问题?  义乌企业网站制作公司,请问义乌比较好的批发小商品的网站是什么?  如何在阿里云高效完成企业建站全流程?  ,网页ppt怎么弄成自己的ppt?  如何基于云服务器快速搭建网站及云盘系统?  岳西云建站教程与模板下载_一站式快速建站系统操作指南  清单制作人网站有哪些,近日“兴风作浪的姑奶奶”引起很多人的关注这是什么事情?  如何选择香港主机高效搭建外贸独立站?  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  ,制作一个手机app网站要多少钱?  如何用腾讯建站主机快速创建免费网站?  红河网站制作公司,红河事业单位身份证如何上传?  如何在云指建站中生成FTP站点?  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  浅析上传头像示例及其注意事项 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。