react-router配合webpack实现按需加载
很久没有写博客了。一直感觉没有什么要写的,但是这个东西确实有必要的。使用react开发,不可能一直打包到一个文件。小项目肯定没有问题,但是变大一旦到几兆,这个问题就很严重。现在又Commonjs,AMD 规范实现了按需加载。这个就不说了。
说了这么多意思就是大型项目,不可能打包到一个文件中,需要按需求加载我们需要的。按需加载的步骤:1、文件切片。2、按需加载。基本思路就是这个。
1.webpack 配置 :

还有一个东西公共提取:
new webpack.optimize.CommonsChunkPlugin('common.js'),
插件的使用,就不多说了。自己去看webapck官网教程。
说明一下:entry:就是你的入口页面。
output:这个东西输出的东西,有必要说一下就是publicPath:这个东西就是我们的服务器端的目录结构,会按这个目录加载js,css,那些东西。path:就是打包到本地的地址。
这个就实现了文件切片。
2、这个剩下的就是按需加载的部分了。
按需加载就是按照url地址进行加载我们的需要的静态资源。
url的跳转就是靠的是react-router这个东西,进行我们的组件的加载。react-router你需要自己去看,不看的话肯定做不出来。这个只是个配置,具体的细节自己看。
入口叶、页配置的话这么玩:

这个是我的测试demo丑陋,但是注意这个入口处的路由配置,然后把这个东西reactDOM一下。
render(
<Router history={hashHistory} routes={rootRoute} />
, document.getElementById('main-holder'));
接下来就是代码(组件)按需加载了,这个就是:path对应的路径,加载这个组件。
module.exports = {
path: '/operation-management/tweets-ctrl',
getComponent(nextState, cb) {
require.ensure([], (require) => {
cb(null, require('./components/tweets_ctrl.js'));
});
}
};
module.exports这个东西有必要说明一下。这个输出规范是node使用的。export default module 这个是es6使用,模块加载和输出规范。官方文档上说的 webpack don't support that。但是网上说使用require().default可以加载es6输出,
但是我没有试过。可以自己试试。
这个组件加载跟入口的写的对象的key不是一样的,注意一下。
3、代码的切片和按需加载基本就实现了。按需加载那个东西webapck会帮我们自己写好。这个东西还是要说明一下。
4、index.html里面的引用,提取的公共东西需要在打包的文件之前。js引用要注意。出现什么未定义估计是这个原因。
这个写的比较简陋,说个步骤好了。细节的东西 ,本来就是要自己去整。但愿会有用吧。需要有react基础才能看懂我在说什么。
还有一个项目的结构没有说。这个东西,看自己的项目怎么样吧,没有固定的。
react-router配合webpack实现按需加载的更多相关文章
- react中create-react-app配置antd按需加载(方法二)
1.yarn add babel-plugin-import 2.在根目录下的package.json下的bable中添加相应代码 "babel": { "presets ...
- React Router 4.0 + webpack 实现组件按需加载
网上关于React Router 4.0的按需加载文章有很多,大致的思路都一样,但是其实具体实现起来却要根据自己的实际情况来定,这里主要介绍一下我的实现方式. 主要方式是通过Route组件的rende ...
- react按需加载(getComponent优美写法),并指定输出模块名称解决缓存(getComponent与chunkFilename)
react配合webpack进行按需加载的方法很简单,Route的component改为getComponent,组件用require.ensure的方式获取,并在webpack中配置chunkFil ...
- 深入浅出的webpack4构建工具---webpack+vue+router 按需加载页面(十五)
1. 为什么需要按需加载? 对于vue单页应用来讲,我们常见的做法把页面上所有的代码都打包到一个bundle.js文件内,但是随着项目越来越大,文件越来越多的情况下,那么bundle.js文件也会越来 ...
- webpack学习笔记--按需加载
为什么需要按需加载 随着互联网的发展,一个网页需要承载的功能越来越多. 对于采用单页应用作为前端架构的网站来说,会面临着一个网页需要加载的代码量很大的问题,因为许多功能都集中的做到了一个 HTML 里 ...
- 前端性能优化之按需加载(React-router+webpack)
一.什么是按需加载 和异步加载script的目的一样(异步加载script的方法),按需加载/代码切割也可以解决首屏加载的速度. 什么时候需要按需加载 如果是大文件,使用按需加载就十分合适.比如一个近 ...
- webpack4下import()模块按需加载,打包按需切割模块,减少包体积,加快首页请求速度
一:背景 因为项目功能越加越多,打包后的体积越来越大,导致首页展示的时候速度比较慢,因为要等压缩的js的包加载完毕. 首页展示的时候只需要对应的js,并不需要全部的js模块,所以这里就可以用按需加载, ...
- react16 路由按需加载、路由权限配置
1. 路由按需加载: 不做按需加载,代码全部打包在bundle.js 文件里,首屏渲染很慢,项目文件较多,会出现1分钟加载的可能性. import React, { Component } from ...
- React Router 按需加载+服务器渲染的闪屏问题
伴随着React协议的『妥协』(v16采用MIT),React为项目的主体,这个在短期内是不会改变的了,在平时使用过程中发现了如下这个问题: 在服务器渲染的时候,刷新页面会出现闪屏的现象(白屏一闪而过 ...
随机推荐
- Exynos 4412 Uboot源码解析
原文地址:http://www.cnblogs.com/jacklu/p/6226330.html Exynos 4412 Uboot的汇编代码就不贴了,没有的可以私信我. 这是我当时阅读代码时的思维 ...
- Java基础常见英语词汇
Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的 ['prəʊɡræmɪŋ]编程 OO: object ...
- Android框架中的广播机制
一.广播通过Intent发送出去 // 定义广播的意图过滤器 private String action = "com.xxx.demo.Broadcast.STATUS_CHANGED&q ...
- 简单的VC++ ADO帮助类
首先看头文件 #pragma once #import "c:\Program Files\Common Files\System\ado\msado15.dll" no_name ...
- javaScript 正则表达式匹配日期
// yyyyMMddhhmmss var pattern = /^(?:(?!0000)[0-9]{4}(?:(?:0[1-9]|1[0-2])(?:0[1-9]|1[0-9]|2[0-8])|(? ...
- Cocos学习-----Cocos2Dx安装
昨天晚上从官网下载了cocos2dx,打开发现win下工程已经是2010了最少,很是郁闷.尝试着在08下新建工程然后添加文件,发现还是很麻烦,于是下载了vs2010,打开编译报错:error C206 ...
- 关于NIO
操作系统的IO控制 在整个IO控制方式的发展过程中,始终贯穿着这样一条宗旨:即尽量减少主机对IO控制的干预,把主机从繁杂的IO控制事务中解脱出来,以便更多地去完成数据处理任务.为了缓和高速CPU和IO ...
- UNICODE 7.0定义的表情符
td.graph { font-size:24px; } UNICODE 7.0定义了78个表情符,从0x1F600到0x1F64F(其中0x1F643和0x1F644没有定义).下表中列出了这些表情 ...
- Unity使用Windows弹窗保存图片
此功能都在类EditorUtility中(using UnityEditor;) 包括 OpenFilePanel打开文件窗口Displays the "open file" di ...
- iOS 判断设备型号
+ (NSString*)deviceString { // 需要#import "sys/utsname.h" struct utsname systemInfo; uname( ...