Vue3+vite2打包路径和路由router-view不显示问题

前言

博主使用vue3+vite2打包项目部署到服务器上时遇到几个有关路径的坑,将这些坑的原因及解决方法提供给大家,希望大家可以有所收获

一、打包默认路径

以前在vue2+webpack中我们在vue.config.js配置publicPath设置静态资源访问路径,但现在使用vue3+vite2环境我们需要在vite.config.js里面配置base;顺便一提,里面的chunkSizeWarningLimit配置的是打包块的大小,单位为kb

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
  build: {
    outDir: "font",
  },//打包文件夹名称配置
  plugins: [vue()],
  base: './',//配置打包相对路径
  build: {//配置打包块大小
    chunkSizeWarningLimit:1500,
  },
})

二、css的@charset UTF-8规则

在打包时由于css文件font-family规则 影响了@charset UTF-8规则,我使用直接去除charset规则的影响

 import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
export default defineConfig({
  plugins: [vue()],
  base: './',//配置打包相对路径
  css: {//去除@charset UTF-8规则影响
    postcss: {
      plugins: [
        {
          postcssPlugin: 'internal:charset-removal',
          AtRule: {
            charset: (atRule) => {
              if (atRule.name === 'charset') {
                atRule.remove();
              }
            }
          }
        }
      ]
    }
  },
  build: {//配置打包块大小
    chunkSizeWarningLimit:1500,
  },
  server:{//配置网络服务
     host:'0.0.0.0'
  }
})

三、路由router-view不显示

上面的坑解决后访问项目(vite打包的项目需要在服务端环境才可以正常访问,不能直接客户端浏览器访问),发现router-view内容不显示,发现是router配置问题下面是博主原先的写法,这样打包之后就会导致router-view不显示

 import {createRouter, createWebHistory} from "vue-router";

// 路由信息
const routes = [
    {
        path: "/",
        name: "Home",
        component:  () => import('../views/Home/index.vue'),
    },
];

// 导出路由
const router = createRouter({
    history: createWebHistory(),
    routes
});

export default router;

因为在没有后端配合的情况下路由模式为history,页面不会重新加载,应该改为hash模式,如下所示,就可以成功解决该问题

import {createRouter, createWebHashHistory} from "vue-router";

// 路由信息
const routes = [
    {
        path: "/",
        name: "Home",
        component:  () => import('../views/Home/index.vue'),
    },
];

// 导出路由
const router = createRouter({
    history: createWebHashHistory(),
    routes
});

export default router;

总结

以上就是博主打包项目过程中遇到的问题,希望大家可以有所收获;如果文章存在问题,欢迎大家评判指正!!!

  • 10
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
好的,这里是一个使用Vue 3和Vite搭建的多级路由示例: 首先,我们需要安装Vue Router: ``` npm install vue-router@4.0.0-0 ``` 接下来,我们创建一个router.js文件,在其中定义我们的路由: ```javascript import { createRouter, createWebHashHistory } from 'vue-router' const routes = [ { path: '/', component: () => import('./views/Home.vue') }, { path: '/about', component: () => import('./views/About.vue') }, { path: '/users', component: () => import('./views/Users.vue'), children: [ { path: '', component: () => import('./views/UsersList.vue') }, { path: ':id', component: () => import('./views/UsersDetail.vue') } ] } ] const router = createRouter({ history: createWebHashHistory(), routes }) export default router ``` 这里我们定义了三个路由,分别是根路径'/'、'/about'和'/users'。其中,'/users'是一个嵌套路由,包含了'/users'和'/users/:id'两个子路由。 接着,在我们的main.js文件中,我们需要将router引入,并将其挂载到Vue实例上: ```javascript import { createApp } from 'vue' import App from './App.vue' import router from './router' const app = createApp(App) app.use(router) app.mount('#app') ``` 最后,我们需要在App.vue中加入\<router-view>标签,用于渲染路由组件: ```html <template> <div id="app"> <nav> <router-link to="/">Home</router-link> | <router-link to="/about">About</router-link> | <router-link to="/users">Users</router-link> </nav> <router-view></router-view> </div> </template> ``` 这样,我们就完成了一个简单的多级路由示例。访问'/users'路径时,将会渲染Users.vue组件,并在其内部渲染UsersList.vue组件;访问'/users/:id'路径时,将会渲染Users.vue组件,并在其内部渲染UsersDetail.vue组件。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值