react-router v4 按需加载的配置方法
2018-06-24 02:09:25来源:未知 阅读 ()
在react项目开发中,当访问默认页面时会一次性请求所有的js资源,这会大大影响页面的加载速度和用户体验。所以添加按需加载功能是必要的,以下是配置按需加载的方法:
安装bundle-loader
npm install --save-dev bundle-loader
定义Bundle.js
import React, { Component } from 'react'; export default class Bundle extends React.Component { constructor(props) { super(props); this.state = { // short for "module" but that's a keyword in js, so "mod" mod: null } } componentWillMount() { this.load(this.props) } componentWillReceiveProps(nextProps) { if (nextProps.load !== this.props.load) { this.load(nextProps) } } load(props) { this.setState({ mod: null }) props.load((mod) => { this.setState({ // handle both es imports and cjs mod: mod.default ? mod.default : mod }) }) } render() { if (!this.state.mod) return false return this.props.children(this.state.mod) } }
app.jsx配置
import React from 'react'; import ReactDOM from 'react-dom'; import { HashRouter, Route } from 'react-router-dom'; import * as routePaths from './js/constants/routePaths'; import Bundle from './js/constants/Bundle.js'; //默认打开页面直接引入 import Index from './js/pages/Index'; //其他页面异步引入 import CardContainer from 'bundle-loader?lazy&name=app-[name]!./js/pages/Card'; import './assets/css/index.scss'; const Card = () => ( <Bundle load={CardContainer}> {(Card) => <Card />} </Bundle> ) ReactDOM.render(( <HashRouter> <div className="container"> <Route path={routePaths.INDEX} exact component={Index} /> <Route path='/card' component={Card} /> </div> </HashRouter> ), document.getElementById('app') );
webpack.config.js 修改
webpackConfig.output = { path: path.resolve(__dirname, 'build/' + config.ftpTarget), publicPath: config.publicPath + '/', filename: 'js/[name].js', chunkFilename: 'js/[id].js' }
这样就可以实现页面js资源按需加载了,打包后的文件命名可以根据自己需要设置。
react-router v4 中文官网:http://reacttraining.cn/web/guides/quick-start
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- JS动态加载脚本的方法 2020-02-14
- IE8中使用javascript动态加载CSS的解决方法 2019-12-02
- 在HTML页面加载完毕后运行某个js的实现方法 2019-11-25
- js防阻塞加载的实现方法 2019-11-15
- 加载js文件的小脚本 2019-10-25
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash