Vue
很适合用来构建单页面应用。对于大多数此类应用,都推荐使用官方支持的Vue Router
;在单页面应用(Single-page application)中,客户端的 JavaScript 可以拦截页面的跳转请求,动态获取新的数据,然后在无需重新加载的情况下更新当前页面。这样通常可以带来更顺滑的用户体验,因为这类场景下用户通常会在很长的一段时间中做出多次交互。这类的单页面应用中,路由的更新是在客户端执行的。
Vue Router
是 Vue 的官方路由。它与 Vue.js 核心深度集成,让用 Vue.js 构建单页应用变得轻而易举。功能包括:
以下我们来介绍Vue Router
的基本使用。
对于vue3,我们推荐使用vue-router 4.x及以上版本。node环境安装如下:
npm install vue-router@4
在我们工程项目中,路由文件通常需要单独管理,以便于后续的使用以及维护。再此基础下,我们引入分为两步:
在与main.ts文件的同级目录下创建router文件夹,并添加index.ts文件(使用ts,若使用js也同理)。
文件内容如下:
import { createRouter, createWebHistory, RouteRecordRaw } from "vue-router";
import Home from "../views/Home.vue";
// 项目其他页面路由(推荐使用)
import Practice from "../router/practiceFolder/practice";
// vue项目自带路由
const routes: Array<RouteRecordRaw> = [
{
path: "/",
name: "Home",
component: Home
},
{
path: "/about",
name: "About",
component: () =>
import(/* webpackChunkName: "about" */ "../views/About.vue")
}
];
const routers = [...routes, ...Practice];
const router = createRouter({
history: createWebHistory(process.env.BASE_URL),
routes: [...routes, ...Practice]
});
export default router;
其中,使用RouteRecordRaw
声明的对象会被当做路由对象,放入到路由对象池里。
createRouter
创建路由;
createWebHistory
代表路由使用 HTML5 模式,也是推荐使用的模式;
代码如下:
import { createApp } from "vue";
import App from "./App.vue";
import router from "./router";
import store from "./store";
createApp(App)
.use(store)
.use(router)
.mount("#app");
入之后我们单页面应用可以在app.vue
配置使用router-view
来切换页面,代码如下:
引入之后,在 Vue 实例中,你可以通过 $router
访问路由实例,若想要导航到不同的 URL,使用this.$router.push(...)
进行跳转
详细的router-view
使用方法可见vue router-view使用详解
当使用
时,内部会调用router.push(...)
这个方法,所以点击
相当于调用 router.push(...)
setup
中访问路由和当前路由因为我们在 setup
里面没有访问 this
,所以我们不能再直接访问 this.$router
或 this.$route
。作为替代,我们使用 useRouter
和 useRoute
函数:
import { useRouter, useRoute } from 'vue-router'
export default {
setup() {
const router = useRouter()
const route = useRoute()
function pushWithQuery(query) {
router.push({
name: 'about',
query: {
...route.query,
},
})
}
},
}
除以上介绍的Vue Router
基本API,还有如下API可供使用:
本文参考官网,进行vue3路由配置实际操作,更加全面的使用请参考官网vue router。