单页应用产出的入口块大小随着业务的复杂度线性增加,导致后期加载速度越来越慢。后面就需要对不同路径下的模块进行拆分,打包到相应的块下,按需加载,找到一块的大小,个数和页面加载速度的平衡点。
.vue模块文件按需加载,其实要做到两件事情:一是标记出这是一个异步组件;二是通知webpack把该组件单独产出为一个块。
官网给出的异步组件写法:异步组件是一个函数,函数的返回值是一个承诺,只是承诺的解决函数的参数是常规组件的定义本身。
const AsyncCom=()=比;的承诺。解决({/*组件定义*/})
这个对webpack不同的版本来说,用法有点区别:
webpack版本在1 - 2之间,可以使用require.ensure来告诉webpack引入了一个异步模块
要求。确保([AYNC_MODULE_PATH],回调,CHUNK_NAME)
其实require.ensure编译后是一个叫_webpack_require_.e的函数,其本身是一个thenable实例,require.ensure的回调放到_webpack_require_.e.then (fn)里面
为了满足以上两个条件
const AsyncCom=解决=比;要求。确保([],()=比;解决(需要(AYNC_MODULE_PATH)), CHUNK_NAME); webpack>=2的版本可以通过进口()来指定动态引入的模块 进口(’。/A.vue ')//返回一个承诺
//const=解决=比;要求。确保([],()=比;解决(需要(’。/a.vue ')),“A”); const=()=比;进口(’。/a.vue”) const路由器=new VueRouter ({ 路线:[ {路径:“/?组件:一个} ] })
对不同路径进行按需加载,并不一定非得每个路径产出一个块,这个还得按不同的业务和场景进行区分,有时候对于同一个业务下的的小异步模块可以进行合并处理。在webapck版本在2.4时,可以在导入引入的时候提供一个/* webpackChunkName: CHUNK_NAME */注释,来表示chunkname,
const=()=比;导入(/* webpackChunkName:“group-a-b-c”*//a.vue。) const B=()=比;导入(/* webpackChunkName:“group-a-b-c”*//b.vue。) const C=()=比;导入(/* webpackChunkName:“group-a-b-c”*//c.vue。)//webpack.conf.js 输出:{ ……//使用code-split产出的块文件名 chunkFilename: utils.assetsPath (js/[chunkname]。[chunkhash] .chunk.js '), …… }
以上所述是小编给大家介绍的Vue路由器的懒加载路径的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!