很久没有写博客了。一直感觉没有什么要写的,但是这个东西确实有必要的。使用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实现按需加载的更多相关文章

  1. react中create-react-app配置antd按需加载(方法二)

    1.yarn add babel-plugin-import 2.在根目录下的package.json下的bable中添加相应代码 "babel": { "presets ...

  2. React Router 4.0 + webpack 实现组件按需加载

    网上关于React Router 4.0的按需加载文章有很多,大致的思路都一样,但是其实具体实现起来却要根据自己的实际情况来定,这里主要介绍一下我的实现方式. 主要方式是通过Route组件的rende ...

  3. react按需加载(getComponent优美写法),并指定输出模块名称解决缓存(getComponent与chunkFilename)

    react配合webpack进行按需加载的方法很简单,Route的component改为getComponent,组件用require.ensure的方式获取,并在webpack中配置chunkFil ...

  4. 深入浅出的webpack4构建工具---webpack+vue+router 按需加载页面(十五)

    1. 为什么需要按需加载? 对于vue单页应用来讲,我们常见的做法把页面上所有的代码都打包到一个bundle.js文件内,但是随着项目越来越大,文件越来越多的情况下,那么bundle.js文件也会越来 ...

  5. webpack学习笔记--按需加载

    为什么需要按需加载 随着互联网的发展,一个网页需要承载的功能越来越多. 对于采用单页应用作为前端架构的网站来说,会面临着一个网页需要加载的代码量很大的问题,因为许多功能都集中的做到了一个 HTML 里 ...

  6. 前端性能优化之按需加载(React-router+webpack)

    一.什么是按需加载 和异步加载script的目的一样(异步加载script的方法),按需加载/代码切割也可以解决首屏加载的速度. 什么时候需要按需加载 如果是大文件,使用按需加载就十分合适.比如一个近 ...

  7. webpack4下import()模块按需加载,打包按需切割模块,减少包体积,加快首页请求速度

    一:背景 因为项目功能越加越多,打包后的体积越来越大,导致首页展示的时候速度比较慢,因为要等压缩的js的包加载完毕. 首页展示的时候只需要对应的js,并不需要全部的js模块,所以这里就可以用按需加载, ...

  8. react16 路由按需加载、路由权限配置

    1. 路由按需加载: 不做按需加载,代码全部打包在bundle.js 文件里,首屏渲染很慢,项目文件较多,会出现1分钟加载的可能性. import React, { Component } from ...

  9. React Router 按需加载+服务器渲染的闪屏问题

    伴随着React协议的『妥协』(v16采用MIT),React为项目的主体,这个在短期内是不会改变的了,在平时使用过程中发现了如下这个问题: 在服务器渲染的时候,刷新页面会出现闪屏的现象(白屏一闪而过 ...

随机推荐

  1. 在Windows和Linux上安装paramiko模块以及easy_install的安装方法

    一.paramiko模块有什么用? paramiko是用python语言写的一个模块,遵循SSH2协议,支持以加密和认证的方式,进行远程服务器的连接.由于使用的是python这样的能够跨平台运行的语言 ...

  2. Centos安装jdk

    运行Java应用的时候,提示无法找到JAVA_HOME,查询java -version [jifeng@localhost bin]$ java -version java version " ...

  3. Python语法一

    前记,今天开始学习Python 参考 笨方法学习+Python(第三版) 因为有编程基础,所以入门不难,相比于以前学过的其它语言编程,Python当然也有它独特的语法格式. 1.安装Python 访问 ...

  4. gulp 学习笔记 (初识)

    根据极客学院入门视频整理 一.gulp介绍,主要提到了gulp是基于流式来管理运行的,目前完全搞不懂这一套专业术语. 二.gulp的安装使用. 1.首先需要在全局环境下安装gulp npm insta ...

  5. 转向Web

    一直搞桌面软件开发,用C++绘界面那蛋疼的日子是记忆犹新,也不想钻研什么网络协议了,好好搞Web方面吧,它的开放很让人激动 Python是个好东西,适合许多场合,包括云计算,科学计算,软件测试,运维等 ...

  6. python之路-Day3

    字典 dic{key:value} 元组与列表相似,唯一就是不能修改dic = {'name':'alex','age':18}查询print(dic['name']) #会报错get方法查询,查询之 ...

  7. mysql高性能索引策略

    转载说明:http://www.nyankosama.com/2014/12/19/high-performance-index/ 1. 引言 随着互联网时代地到来,各种各样的基于互联网的应用和服务进 ...

  8. jsp 9大内置对象

    http://www.cnblogs.com/xrong/p/3168616.html

  9. js中的原形链问题

    ---恢复内容开始--- 一.在js中大家讨论的原形链都是围绕在prototype和__proto__. 1.__proto__是内部原型 2.prototype是构造器原型(构造器就是构造函数) 3 ...

  10. linux学习笔记——基础命令

    最近看了一些老男孩linux运维视频,挺不错的,特此记录一下 linux组成 gun组件 shell等 linux内核 其他软件 linux主要内核: linux kernel2.2 linux ke ...