解决vue单页面应用进入页面加载所有 js 的问题
一般在index.js中都是这么引入的组件
importfrom'@/pages/my' importCartfrom'@/pages/cart' importOrderfrom'@/pages/order' importTMapfrom'@/pages/map' importNewfrom'@/pages/new'
换成这样就好啦
constMy=r=>require.ensure([],()=>r(require('@/pages/my')),'my') constCart=r=>require.ensure([],()=>r(require('@/pages/cart')),'cart') constOrder=r=>require.ensure([],()=>r(require('@/pages/order')),'order') constTMap=r=>require.ensure([],()=>r(require('@/pages/map')),'map') constNew=r=>require.ensure([],()=>r(require('@/pages/new')),'new')
补充知识:vue--router路由跳转错误,NavigationDuplicated
vue-router≥3.0版本回调形式以及改成promiseapi的形式了,返回的是一个promise,如果路由地址跳转相同,且没有捕获到错误,控制台始终会出现如图所示的警告(注:3.0以下版本则不会出现以下警告!!!,因路由回调问题…)
方案一:
安装vue-router3.0以下版本:先卸载3.0以上版本然后再安装旧版本npminstall@vue-router2.8.0-S
方案二:
针对于路由跳转相同的地址添加catch捕获一下异常:this.$router.push('/location').catch(err=>{console.log(err)})
方案三:
在main.js下注册一个全局函数即可
importRouterfrom'vue-router' constoriginalPush=Router.prototype.push Router.prototype.push=functionpush(location){ returnoriginalPush.call(this,location).catch(err=>err) }
注:官方vue-router新版本路由默认回调返回的都是promise,原先就版本的路由回调将废弃!!!!
以上这篇解决vue单页面应用进入页面加载所有js的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。