很久没有写博客了。一直感觉没有什么要写的,但是这个东西确实有必要的。使用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. 柯朗数(Courant number)研究

    在数值计算过程中,对于计算结果的准确性和效率有很高的要求,但是这两者之间往往互相矛盾:而使用柯朗数可用于平衡两者. 1.柯朗数的定义: C = sqrt(gh)*t/s 其中,t是时间步长,s是网格在 ...

  2. 很不错的sql练习题(select)

      创建表和输入数据 CREATE TABLE STUDENT (SNO VARCHAR(3) NOT NULL,    SNAME VARCHAR(4) NOT NULL,    SSEX VARC ...

  3. paramiko模块

    安装: # pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto (1) wget http://ftp.dlitz.net/pub/dlitz/cr ...

  4. VFP MSSOAPTOOKIT 使用SOAP Headers

    .NET 有如下使用了自定义扩展HEADER来做验证  server.asmx代码 using System;using System.Collections.Generic;using System ...

  5. 建筑材料系统 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发

    框架介绍: 1.基于 ASP.NET MVC4.0 + WebAPI + EasyUI + Knockout 的架构设计开发 2.采用MVC的框架模式,具有耦合性低.重用性高.生命周期成本低.可维护性 ...

  6. 循序渐进Python3(十一) --2-- web之javascript

      JavaScrip                JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之后 ...

  7. VS2010 使用WebService

    vs2010上面找不到直接创建webservice模板方式了.可以通过一下方式创建. 1.如果直接选择 .NET 4.0,可以选择 ASP.NET Empty Web Site/Application ...

  8. LVS简单实现NAT&DR模型

    LVS:Linux Virtual Server  一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver.org. 现在LVS已经是Linux标准内核的一部分 ...

  9. iOS基础-NSString及NSMutableString剖析

    一.NSString头文件 NSString : NSObject 实现协议: NSCopying/NSMutableCopying/NSSecureCoding 类别: //扩展类别 NSStrin ...

  10. thinkphp ajax分页

    临时更改后的page类(很多地方没修改...因为笔者PHP没学好..)如下: 复制代码 <?php namespace Fenye\libs; /** file: page.class.php ...