Vue按需加载的具体实现
概念(懒加载)
当打包构建应用时,JavaScript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,嗯,这样就更加高效了。
场景
xxx项目作为一个单页面应用,采用组件化的开发模式,每次启动首页都会加载全部组件,但此时只是访问了首页而已,就造成了大量组件污染加载的情况。
目的
只在访问当前页面时加载对应组件,避免页面组件全部加载。(按需加载)
实现
app.vue
router.js
importVuefrom'vue' importVueRouterfrom'vue-router' import'babel-polyfill' import{Promise}from'es6-promise-polyfill' importAppfrom'../components/app' //定义路由,每个路由映射一个组件。 constRouters=[ { path:'/',//路径 component:resolve=>require(['../components/member/index],resolve)//异步加载组件 }, { path:'/login', component:resolve=>require(['../components/member/login'],resolve) } ] constRouterConfig={ routes:Routers } //创建router实例,并传递路由配置。 constrouter=newVueRouter(RouterConfig); //创建并挂载根实例。 newVue({ el:'#app', router, //将h作为createElement的别名是一个通用惯例。 render:h=>(App) })
注意:
require()函数接受两个参数。第一个参数是一个数组,表示所依赖的模块,例如['moduleA','moduleB'],第二个参数是一个回调函数,当前面指定的模块都加载成功后,它将被调用。加载的模块会以参数形式传入该函数,从而在回调函数内部使用这些模块。
示例代码中使用了异步的方式加载组件,其中require函数负责异步引入将要渲染的组件,而resolve则负责异步回调渲染组件。
babel-polyfill:对Promise进行转码编译;
npminstall--savebabel-polyfill
es6-promise-polyfill解决Promise兼容性问题。关于不太了解Promise的同学请移步这里
npminstall--savees6-promise-polyfill
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。