webpack按需加载之react实践
基本使用webpack官网有详细的介绍,这里简单阐述下: 加载函数: require.ensure(dependencies,callback,chunkName) 这个方法可以实现js的按需加载,分开打包, // webpack.config.js module.exports = { ... output: { ... chunkFilename: '[name].[chunkhash:5].chunk.js',publicPath: '/dist/' } ... } 每个chunk都会有一个ID,会在webpack内部生成,当然我们也可以给 注意: 如果这里不配置 配置文件中
demo展示// a.js console.log('a'); // b.js console.log('b'); // c.js console.log('c'); // entry.js require.ensure([],() => { require('./a') require('./b') },'chunk1') if(false){ require.ensure([],() => { require('./c') },'chunk2') } 将会打包出3个文件,基础包、chunk1 和 chunk2,但是chunk2在if判断中,而且永远为false,所以 chunk2 虽然打包了但永远不会被加载。 结合 react-router 按需加载react-router本身有一套动态加载方案。 const CourseRoute = { path: 'course/:courseId',getChildRoutes(location,callback) { require.ensure([],function (require) { callback(null,[ require('./routes/Announcements'),require('./routes/Assignments'),require('./routes/Grades'),]) }) },getIndexRoute(location,require('./components/Index')) }) },getComponents(location,require('./components/Course')) }) } }
实际操作const home = (location,callback) => { require.ensure([],require => { callback(null,require('modules/home')) },'home') } const blog = (location,require('modules/blog')) },'blog') } <Router history={history}> <Route path="/" component={App}> <Route path="home" getComponent={home}></Route> <Route path="blog" getComponent={blog}></Route> </Route> </Router> 能否将按需加载抽成公共函数?答案:不可以。 因为
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |