记录下关于vite+vue3+vue-Router(4.0+)+pinia踩的坑

707 阅读1分钟

- 关于动态路由

  • 动态路由一般需要在beforeEach中去做拦截处理,把后端传过来的路由数据存入,这里我选择了pinia,所以需要引入pinia,在路由守卫中需要用到pinia进行数据存储,页面第一次也会去走一次router文件,由于pinia没有挂载到vue上面,导致报错,做法就是新建一个js文件,然后在js文件创建初始化,然后导出,然后分别在main和使用路由守卫的地方去引入。

  • 其次就是由于webpack和vite的差异导致当处理后端的路由数据时候在动态挂载component的时候,之前vue2用的import就不行了,具体需要如下图:

1690257194286.jpg

这样子就可以挂载上了,需要注意的是,不能仅仅使用router.addRouter去挂载,还需要使用router.options.routes把每一个处理好的数据push到父路由数组里面。
  • 当点击浏览器自带的刷新时,会导致页面空白,找不到路径,我得理解是由于是动态路由所以导致刷新的时候数据丢失,解决办法是在app.vue里面去做处理

image.png

这样子就可以使用户刷新的时候不会出现页面空白了,不过因为vue说到底还是单页面,所以会有空白闪屏的情况出现