URL 的 hash 也就是锚点(#),本质上是改变 window.location 的 href 属性。我们可以通过直接赋值 location.hash 来改变 href,但是页面不发生刷新。
原地址:
http://localhost:8080
在控制台输入:
location.hash = 'aaa'
//http://localhost:8080/aaa
location.hash = 'bbb'
//http://localhost:8080/bbb
history.pushState({},'','home')
http://localhost:8080/home
history.pushState({},'','about')
http://localhost:8080/about
(可以使用history.back
后退)
history.replaceState({},'','home')
http://localhost:8080/home
history.replaceState({},'','about')
http://localhost:8080/about
(直接替换,不可返回)
history.back
等价于history.go(-1)
history.forward
等价于history.go(1)
这三个接口等价于浏览器的前进后退
npm install vue-router --save
导入
路由对象,并且调用 Vue.use(VueRouter)
路由实例
,并且传入路由映射配置
Vue 实例
中挂载
创建的路由实例
src/router/index.js
:
// 配置路由相关的信息
import Vue from 'vue'
import VueRouter from 'vue-router'
// 1.通过 Vue.use(插件),安装插件
Vue.use(VueRouter)
// 2.创建 VueRouter 对象
const routes = []
const router = new VueRouter({
// 配置路由和组件之间的应用关系
routes
})
// 3.将router 对象传入到 Vue 实例中
export default router
main.js
:
import Vue from 'vue'
import App from './App'
import router from './router'
Vue.config.productionTip = false
/* eslint-disable no-new */
new Vue({
el: '#app',
router,
render: h => h(App)
})
App.vue
:
<template>
<div id="app">
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style>
</style>
src/components/home.vue
:
<template>
<div>
<h4>我是首页</h4>
<p>我是首页的内容</p>
</div>
</template>
<script>
export default {
name: "home"
}
</script>
<style scoped>
</style>
src/components/about.vue
:
<template>
<div>
<h4>我是关于</h4>
<p>我是关于的内容</p>
</div>
</template>
<script>
export default {
name: "about"
}
</script>
<style scoped>
</style>
src/router/index.js
:// 配置路由相关的信息
import Vue from 'vue'
import VueRouter from 'vue-router'
import home from '../components/home'
import about from '../components/about'
// 1.通过 Vue.use(插件),安装插件
Vue.use(VueRouter)
// 2.创建 VueRouter 对象
const routes = [
{
path: '',
// redirect:重定向
// 将根路径重定向到 /home 的路径下
redirect: '/home'
},
{
path: '/home',
component: home
},
{
path: '/about',
component: about
}
]
const router = new VueRouter({
// 配置路由和组件之间的应用关系
routes,
// 默认情况下,路径的改变使用的是 URL 的 hash
// 如果希望使用 HTML5 的 history 模式,进行如下配置:
mode: 'history'
})
// 3.将router 对象传入到 Vue 实例中
export default router
App.vue
:
<template>
<div id="app">
<router-link to="/home">首页</router-link>
<router-link to="/about">关于</router-link>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: 'App'
}
</script>
<style>
</style>
结果:
参考视频:小码哥 Vue 视频教程