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为项目的主体,这个在短期内是不会改变的了,在平时使用过程中发现了如下这个问题: 在服务器渲染的时候,刷新页面会出现闪屏的现象(白屏一闪而过 ...
随机推荐
- grep sed 大批量替换字符串
sed -i s/"str1"/"str2"/g `grep "str1" -rl --include="*.[ch]" ...
- python的路径
原来可以这么用和那么用 os.mkdir('d:\\su\\help1') os.mkdir('d:/su/help') 为啥提供俩种呢 真乱
- mac下开发IOS代码管理
1.安装和配置subversion服务器 在windows 服务器上安装VisualSVN-Server,下载地址http://www.visualsvn.com/server/download/.采 ...
- QML引擎的演进,第一部分
原文链接:Lars Knoll – Evolution of the QML engine, part 1 QML作为一项技术对于Qt的成功变得越来越重要.它允许创建流畅的动画界面,与现今的市场预期相 ...
- Html5知识
<!DOCTYPE> 声明 <!DOCTYPE>声明有助于浏览器中正确显示网页. 网络上有很多不同的文件,如果能够正确声明HTML的版本,浏览器就能正确显示网页内容. doct ...
- c#窗体去掉borderstyle进行拖动
private void BaseCForm_Load(object sender, EventArgs e) { DrawStyle(); this.panel1 ...
- fedora 24下修改IP
在ROOT环境下 cd /etc/sysconfig/network-scripts 找到类似 ifcfg-enp1s0的文件 sudo vi ifcfg-enp1s0 HWADDR=XX:XX:X ...
- asp.net LINQ数据访问技术from where select order by子句
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Web.UI ...
- Storyboard中segue(转场)使用
源引:http://www.2cto.com/kf/201210/161737.html 一.视图切换类型介绍在storyboard中,segue有几种不同的类型,在iphone和ipad的开发中,s ...
- jqGrid的选中行事件
http://blog.csdn.net/u014381863/article/details/50375121