【vue3|vue-router4】component(resolve) {...}修改组件引入方式

🎈博客主页:🌈我的主页🌈
🎈欢迎点赞 👍 收藏 🌟留言 📝 欢迎讨论!👏
🎈本文由 【泠青沼~】 原创,首发于 CSDN🚩🚩🚩
🎈由于博主是在学小白一枚,难免会有错误,有任何问题欢迎评论区留言指出,感激不尽!🌠个人主页



🌟 一、环境

vue:3.2.13
vue-router::4.0.3
vuex:4.1.0

🌟 二、component(resolve) {…}作用

component(resolve) {...}这块代码的主要作用是根据不同的component开头名字引入不同目录下的.vue文件

component(resolve){
               if(component.startsWith("Home")){
               require(['../views/'+component+'.vue'],resolve)
                  }
                  else if(component.startsWith("Emp")){require(['../views/emp/'+component+'.vue'],resolve)
                  }else if(component.startsWith("Per")){
                      require(['../views/per/'+component+'.vue'],resolve)
                  }else if(component.startsWith("Sal")){
                      require(['../views/sal/'+component+'.vue'],resolve)
                  }else if(component.startsWith("Sta")){
                     require(['../views/sta/'+component+'.vue'],resolve)
                  }else if(component.startsWith("Sys")){
                      require(['../views/sys/'+component+'.vue'],resolve)
                  }
}

以上代码出现问题Uncaught (in promise) TypeError: Cannot read properties of undefinedUncaught (in promise) TypeError: Cannot use 'in' operator to search for 'catch'

修改为:新版本的导入方式与之前的引入方式不同

component(resolve){
                if(component.startsWith("Home")){
                    return import('../views/'+component)
                }else if(component.startsWith("Emp")) {
                    return import('../views/emp/'+component)
                }else if(component.startsWith("Per")){
                    return import('../views/per/'+component)
                }else if(component.startsWith("Sal")){
                    return import('../views/sal/'+component)
                }else if(component.startsWith("Sta")){
                    return import('../views/sta/'+component)
                }else if(component.startsWith("Sys")){
                    return import('../views/sys/'+component)
                }
            }

🌟 三、路由懒加载

当打包构建应用时,JavaScript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割成不同的代码块,然后当路由被访问的时候才加载对应组件,这样就会更加高效。

Vue Router 支持开箱即用的动态导入:

const UserDetails = () => import('./views/UserDetails.vue')

const router = createRouter({
  // ...
  routes: [{ path: '/users/:id', component: UserDetails }],
})

component (和 components) 配置接收一个返回 Promise 组件的函数,Vue Router 只会在第一次进入页面时才会获取这个函数,然后使用缓存数据

const UserDetails = () =>
  Promise.resolve({
    /* 组件定义 */
  })

参考:路由懒加载

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值