webpack+react-router按需加载入门
来源:互联网 发布:盛势网络剧剧照 编辑:程序博客网 时间:2024/05/17 04:07
webpack+react-router按需加载入门
要理解此篇文章,需要有一定的webpack基础和react-router的基本功哦,废话不多说,下面就直接上代码讲解。
1、文件目录
2、react-router路由配置(index.js 文件)
//引入子路由文件,ensure函数为异步加载的函数import App from "./js/app";const detailContainer = (location, cb) => { require.ensure([], require => { cb(null, require('./js/detail').default) //使用es6语法的export导出组件时,需加上 defalut },'detail')}//更改Router组件渲染函数render(( <Router history={browserHistory}> <Route path="/" component={App}> <Route path="/detail" getComponent={detailContainer} /> </Route> </Router>), document.getElementById('app'))
- 注意:首页组件尽量不要用异步方法引入,至少进入网页你得显示点内容吧;
3、主要webapck配置
//这里的注释只标示了react-router按需加载需要更改的配置,其他的基本配置还需要自己理解哦 ^_^config = { entry: { desktop: ['babel-polyfill',path.resolve(__dirname,'./src/index.js')], vendor: ['react','react-dom'] //需添加,提取公共代码, }, resolve: { alias: {} }, output: { publicPath: "/build/", path: path.resolve(__dirname, 'build'), filename: '[name].js', chunkFilename: '[name].chunk.js' //需要添加的配置,name会自动获取文件名 }, plugins:[ new webpack.optimize.CommonsChunkPlugin({ name: 'vendor', //需要和entry的vendor配合使用 filename: 'vendor.js' //生成的公共代码文件名 }) ], module: { //解析文件需要的loaders,根据自己需要配置 loaders: [{ test: /\.jsx?$/, loader: ['babel'], query: { presets: ['react', 'es2015' , 'stage-0'] }, exclude: /node_modules/ }, { test: /\.css$/, loader: 'style!css' }, { test: /\.less$/, loader: 'style!css!less' },{ test: /\.(png|jpg|gif)$/, loader: 'url-loader', query: { limit: 108192, name: 'images/[name].[hash:8].[ext]' } }] } };
4、其他一些文件做的一些操作
inbox.js处理嵌套的路由
export default class Inbox extends Component{ render() { // console.log(this.props); // this.props.route.childRoutes return ( <div> <ul> <li><Link to="/">返回首页(xxxx)</Link></li> {this.props.route.childRoutes.map((item,i)=>{ return <li key={i}><Link to={'/inbox/'+item.path}>{item.title}</Link></li> })} </ul> {/*不要忘记这里*/} {this.props.children} </div> ) }}
app.js首页显示的内容,并做了link路由处理
const App = React.createClass({ render() { return ( <div> <h1>Welcome to the app!</h1> <ul> <li><Link to="/detail">详情页</Link></li> <li><Link to="/inbox">个人中心</Link></li> </ul> {this.props.children} </div> ) } })export default App;
其他的页面都是正常的render页面了,没什么特殊的了
5、css问题
细心的博友可能会问,css文件怎么办?
目前这个demo是把css文件给打包到自己的js文件内了,还没有找到方法把css单独打包出来也按需加载。
之前使用webpack的extract-text-webpack-plugin这个插件尝试分离出css,但是没有成功,欢迎大家给出宝贵的建议。
详细代码:https://github.com/theFrontCalf/webpack-react-router-demandOnLoad.git
阅读全文
1 0
- webpack+react-router按需加载入门
- Webpack + react-router 按需加载
- React router+ webpack实现:按需加载
- React-router中,结合webpack实现按需加载
- react-router 按需加载
- react-router实现按需加载
- react-router v4 按需加载
- 基于 Webpack 2 的 React Router 懒加载路由配置
- Webpack懒加载React Router的页面组件
- react webpack 按需加载初试
- React+Webpack+Router搭建React基础工程
- 浅谈React Router入门
- React-Router入门Demo
- React-Router入门
- react结合redux和react-router开发大型应用实现按需加载(code splitting)
- react+redux+router+webpack+immutable.js框架
- webpack-dev-server 支持 react-router BrowserHistory
- React +ES6 +Webpack入门
- NoClassDefFoundError
- scribe、chukwa、kafka、flume日志系统对比
- 文件下载
- Centos6.5 远程访问mysql
- 【python代码技巧2】数组索引扩增技巧
- webpack+react-router按需加载入门
- 约束布局ConstraintLayout的使用(二)
- crt连接centos时的一个小问题(桥接模式)
- pipenet.v9.0(Spray V3.40,Standard V3.4,Transient V5.3)
- 十四 iOS之 画板
- 五、python日期相关的操作
- java基础之序列化详解
- 文章Super-Convergence记录
- HDU 6128 Inverse of sum(取模+map处理)