注:本文使用的 react-router 版本为 2.8.1
React Router 是一个非常出色的路由解决方案,同时也非常容易上手。但是当网站规模越来越大的时候,首先出现的问题是 Javascript 文件变得巨大,这导致首页渲染的时间让人难以忍受。实际上程序应当只加载当前渲染页所需的 JavaScript,也就是大家说的“代码分拆" — 将所有的代码分拆成多个小包,在用户浏览过程中按需加载。
所得到的效果是:
以前是这样(23333,我真不是故意的。。)
现在是这样:
实际上就是将一个大 javascript 文件拆分成了若干个 chunk file。
下面是改造过程
Webpack 配置
首先在 webpack.config.js
的 output
内加上 chunkFilename
output: { path: path.join(__dirname, '/../dist/assets'), filename: 'app.js', publicPath: defaultSettings.publicPath, // 添加 chunkFilename chunkFilename: '[name].[chunkhash:5].chunk.js', },
name
是在代码里为创建的 chunk 指定的名字,如果代码中没指定则 webpack 默认分配 id 作为 name。
chunkhash
是文件的 hash 码,这里只使用前五位。
添加首页
以前你的路由大概应该是这样的:(作为需要按需加载的大型应用,路由肯定是相当复杂,这里只列举部分路由举例)
ReactDOM.render( ( <Router history={browserHistory}> {/* 主页 *