美文网首页
vite打包正式环境上路由页面不能正确加载的解决方案

vite打包正式环境上路由页面不能正确加载的解决方案

作者: 一支桨 | 来源:发表于2023-02-26 10:05 被阅读0次

问题描述

在本地开发环境中页面都能动态加载,但是执行打包命令后,产生了点击路由控制台输出找不到页面的报错

component: () => import(/* @vite-ignore */`/src/views${item__.pageName}.vue`)

多次尝试修改引入文件路径发现并不能生效,于是看了一下vite的官方文档
, 发现vite升级到2.0的版本后, 多出一个方法,import.meta.glob, 可以动态引入路由,于是尝试这种方法

//加载views下面的所有vue和tsx的文件
const modules = import.meta.glob('../../views/**/*.{vue,tsx}')

//匹配路由,将本地模块返回,此处搬运了vben的官方写法
function dynamicImport(
  dynamicViewsModules: Record<string, () => Promise<Recordable>>,
  component: string,
) {
  const keys = Object.keys(dynamicViewsModules)
  const matchKeys = keys.filter((key) => {
    const k = key.replace('../../views', '')
    const startFlag = component.startsWith('/')
    const endFlag = component.endsWith('.vue') || component.endsWith('.tsx')
    const startIndex = startFlag ? 0 : 1
    const lastIndex = endFlag ? k.length : k.lastIndexOf('.')
    return k.substring(startIndex, lastIndex) === component
  })
  if (matchKeys?.length === 1) {
    const matchKey = matchKeys[0]
    return dynamicViewsModules[matchKey]
  } else {
    warn('在src/views/下找不到`' + component + '.vue` 或 `' + component + '.tsx`, 请自行创建!')
    return EXCEPTION_COMPONENT
  }
}

//根据后端的路由地址跟本地模块匹配,设置本地路由
let current = dynamicImport(modules,item.url)
component = current
//....
router.push({
  //....
component,
})

此时本地能正常运行,打包后也能正常请求到界面。

相关文章

  • 复习3

    vue路由懒加载 1.vue路由懒加载解决的什么 问题:解决打包后文件过大的问题,从而优化页面加载,提升性能 注意...

  • Vue-Router懒加载

    路由懒加载当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割...

  • 路由懒加载

    路由懒加载当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分割...

  • Vue打包优化

    1、路由懒加载 当打包构建应用时,Javascript 包会变得非常大,影响页面加载。如果我们能把不同路由对应的组...

  • Vue提高15 路由根据开发状态懒加载

    路由的懒加载 当打包构建应用时,Javascript包会变得非常大,影响页面加载。如果我们能把不同路由对应的组件分...

  • vue路由懒加载,vue首屏加载慢和使用懒加载prefetch问

    使用路由懒加载以后 webpack打包可以根据页面划分来生成文件,根据路由的不同来加载文件,解决了首页一次性加载文...

  • router路由的懒加载和嵌套路由

    路由的懒加载 当使用webpack打包构建应用时, Javascript包会变得非常大,影响页面加载。 如果我们能...

  • vue网站加载速度优化

    1.减小入口文件的体积 通常使用的手段是路由懒加载,开启路由懒加载之后,带请求的页面会单独打包js文件,使得入口文...

  • vue之vue-router路由懒加载

    用vue.js写单页面应用时,会出现打包后的JavaScript包非常大,影响页面加载,我们可以利用路由的懒加载去...

  • vue-cli3.x 项目优化

    1.路由懒加载 像vue这种单页面应用,如果没有应用懒加载,运用webpack打包后的文件将会异常的大,造成...

网友评论

      本文标题:vite打包正式环境上路由页面不能正确加载的解决方案

      本文链接:https://www.haomeiwen.com/subject/ggwqldtx.html