更新时间:2023-05-30 来源:黑马程序员 浏览量:
Vue Router是Vue.js官方的路由管理器,它可以帮助开发者在Vue应用中实现导航和路由功能。Vue Router提供了两种常用的路由模式:hash模式和history模式。
Hash模式使用URL中的哈希值(即 # 后面的部分)来模拟路由。当URL的哈希值发生变化时,Vue Router可以根据哈希值的变化来匹配相应的路由并展示相应的组件。
实现原理:
·在HTML中,我们会将路由链接设置为带有#的URL。例如:
<a href="#/home">Home</a>
·在Vue Router初始化时,会监听URL的hashchange事件,当URL的哈希值发生变化时,Vue Router会根据新的哈希值匹配对应的路由,并展示相应的组件。
·在Vue Router初始化时,还会通过JavaScript动态创建一个隐藏的iframe元素,并将其src属性设置为一个固定的URL。这个iframe的作用是在浏览器的历史记录中保留一个历史记录项,以便在用户点击后退按钮时能够正确地触发路由变化。如下:
// main.js import Vue from 'vue'; import VueRouter from 'vue-router'; import App from './App.vue'; Vue.use(VueRouter); const routes = [ { path: '/home', component: Home }, { path: '/about', component: About } ]; const router = new VueRouter({ mode: 'hash', routes }); new Vue({ router, render: h => h(App) }).$mount('#app');
History模式使用HTML5的history API来实现路由功能。它利用了浏览器的pushState()和replaceState()方法来修改URL,而不会引起页面的刷新。
实现原理:
·在HTML中,我们会使用:
<router-link>
组件或者编程式导航来触发路由的跳转。
·在Vue Router初始化时,会通过history.pushState()方法或history.replaceState()方法来修改URL,同时不刷新页面。这样就可以实现前端路由的跳转。
·在服务端需要进行相应的配置,以确保在使用history模式时,当用户在浏览器中直接访问某个路由时,能正确地返回对应的页面。如下:
// main.js import Vue from 'vue'; import VueRouter from 'vue-router'; import App from './App.vue'; Vue.use(VueRouter); const routes = [ { path: '/home', component: Home }, { path: '/about', component: About } ]; const router = new VueRouter({ mode: 'history', routes }); new Vue({ router, render: h => h(App) }).$mount('#app');
在上面的代码示例中,routes数组中定义了路由的配置,其中每个路由对象包含了路径和对应的组件。然后,通过创建一个VueRouter 实例,并将其传递给Vue实例的router选项,即可启用路由功能。
需要说明的是,以上示例仅展示了Vue Router的基本用法,实际的应用可能还需要更多的配置和组件定义。