Webpack2 + Vue2 + Vue-Router2 如何实现懒加载?
2017-11-14 09:55
1676 查看
webpack2 的中 System.import 方法将被弃用, 推荐改成以下写法:
https://www.mmxiaowu.com/article/5848239bd4352863efb55469
正常写法
支持分组的写法
昨天将一个vue 1.0的手机端项目升级全面升级到2.0 (webpack, vue, vue-router, vuex), 发现懒加载不能用了
查资料后发现, 主要原因是webpack的升级
在webpack1时代, 路由配置里, 懒加载是这么写的:
但是到webpack2后, webpack修改了api, (
https://www.mmxiaowu.com/article/5848239bd4352863efb55469
正常写法
const centerHome = resolve => require(['../pages/home/center-home.vue'], resolve) const centerInfo = resolve => require(['../pages/home/center-info.vue'], resolve) const centerShop = resolve => require(['../pages/home/center-shop.vue'], resolve) const router = new VueRouter({ mode: 'hash', base: __dirname, scrollBehavior, routes: [ { name:'center-home', path: '/center/home', component: centerHome }, { name:'center-info', path: '/center/info', component: centerInfo }, { name:'center-shop', path: '/center/shop', component: centerShop }, ] })
支持分组的写法
const centerHome = r => require.ensure([], () => r(require('../pages/home/center-home.vue')), 'center') const centerInfo = r => require.ensure([], () => r(require('../pages/home/center-info.vue')), 'center') const centerShop = r => require.ensure([], () => r(require('../pages/home/center-shop.vue')), 'center') const router = new VueRouter({ mode: 'hash', base: __dirname, scrollBehavior, routes: [ { name:'center-home', path: '/center/home', component: centerHome }, { name:'center-info', path: '/center/info', component: centerInfo }, { name:'center-shop', path: '/center/shop', component: centerShop }, ] })
昨天将一个vue 1.0的手机端项目升级全面升级到2.0 (webpack, vue, vue-router, vuex), 发现懒加载不能用了
查资料后发现, 主要原因是webpack的升级
在webpack1时代, 路由配置里, 懒加载是这么写的:
// vue1 '/group/log': { name: 'grouplog', component(resolve) { require(['./components/group/group-log.vue'], resolve) } } // vue2 const Foo = resolve => require(['./Foo.vue'], resolve) const router = new VueRouter({ routes: [ { path: '/foo', component: Foo } ] }) `
但是到webpack2后, webpack修改了api, (
准确来说是: webpack2 已经支持原生的 ES6 的模块加载器了)所以您需要这么写: (相关资料)
// vue1 const Question = () => System.import('./components/question/index.vue') // 中间代码省略 '/group/log': { name: 'grouplog', component: Question } // vue2 const Question = () => System.import('./components/question/index.vue') const router = new VueRouter({ mode: 'history', base: __dirname, routes: [ { path: '/question/:id', component: Question }, ] })
相关文章推荐
- 详解webpack + react + react-router 如何实现懒加载
- [置顶] React-router-v4 - Webpack 实现按需加载(code-splitting)
- vue---vue2.x中如何异步加载路由组件,webpack+vue实现组件懒加载
- webpack+react-router实现代码拆分按需加载(上)
- 利用 React/Redux/React-Router 4/webpack 开发大型 web 项目时如何按需加载
- EasyDSS高性能流媒体服务器前端重构(五)- webpack + vue-router 开发单页面前端实现按需加载 - 副本
- react-router4 配合webpack require.ensure 实现异步加载的示例
- React-router中结合webpack实现按需加载实例
- webpack+react-router实现代码拆分按需加载(下)
- React-router中,结合webpack实现按需加载
- React router+ webpack实现JS按需加载
- EasyDSS高性能流媒体服务器前端重构(五)- webpack + vue-router 开发单页面前端实现按需加载
- EasyDSS高性能流媒体服务器前端重构(五): webpack + vue-router 开发单页面前端实现按需加载
- Angular (SPA) WebPack模块化打包、按需加载解决方案完整实现
- webpack入坑之旅(六)配合vue-router实现SPA
- 如何用webpack实现自动化的前端构建工作流
- Webpack + react-router 按需加载
- webpack实现热加载自动刷新的方法
- webpack2+node+react+babel实现热加载(hmr)
- AngularJS的ui-router第一次点击激活路由加载页面,再次点击就没用,如何实现每次点击都激活加载路由一次