router/index.js
import { createRouter, createWebHistory } from 'vue-router'
// createRouter 创建路由实例,===> new VueRouter()
// 1. history模式: createWebHistory() http://xxx/user
// 2. hash模式: createWebHashHistory() http://xxx/#/user
// vite 的配置 import.meta.env.BASE_URL 是路由的基准地址,默认是 ’/‘
// https://vitejs.dev/guide/build.html#public-base-path
// 如果将来你部署的域名路径是:http://xxx/my-path/user
// vite.config.ts 添加配置 base: my-path,路由这就会加上 my-path 前缀了
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL), //所有请求都会加上base路径
routes: []
})
export default router
import.meta.env.BASE_URL 是Vite 环境变量:https://cn.vitejs.dev/guide/env-and-mode.html
meta.env.BASE_URL可以在vite.config.js
中进行配置:base,不配置默认为/
// https://vitejs.dev/config/
export default defineConfig({
plugins: [vue()],
base: '/',
resolve: {
alias: {
'@': fileURLToPath(new URL('./src', import.meta.url))
}
}
})
Vue3中路由的使用跟Vue2不同,因为vue3中没有this
了
<script setup>
const goList = () => {
this.router.push('/list') //此处this为undefined
}
</script>
<template>
<button @click="goList" >列表</button> //错误
<button @click="$router.push('/list')">列表</button> //正确
</template>
<script>
import { useRoute, useRouter } from 'vue-router'
const router= useRouter() //进行路由跳转
const route = useRoute() //获取请求参数
const goList = () => {
router.push("/list")
}
</script>