它是一个Vue.js官方提供的路由管理器。是一个功能更加强大的前端路由器,推荐使用。Vue Router和Vue.js非常契合,可以一起方便的实现SPA(single page web application,单页应用程序)应用程序的开发。Vue Router依赖于Vue,所以需要先引入Vue,再引入Vue Router
1.1.1 有哪些特性
-
支持H5历史模式或者hash模式
-
支持嵌套路由
-
支持路由参数
-
支持编程式路由
-
支持命名路由
-
支持路由导航守卫
-
支持路由过渡动画特效
-
支持路由懒加载
-
支持路由滚动行为
1.1.2 使用步骤
1.导入js文件
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>
<script src="https://unpkg.com/vue-router/dist/vue-router.js"></script>
如果 其他官网上提供的vue-router.js访问不了。我们现在 用npm下载
vue核心插件之一Vue Router路由模块
vue-router 路由插件是vue的核心插件
1.下载
npm install vue-router -S
npm install vue-router --save
我们推荐 使用本地下载好的vue.js和vue-router.js
<!-- 1.先引入vue -->
<script src="./js/vue.js"></script>
<!-- 2.再引入vue-router -->
<script src="./js/vue-router.js"></script>
2.添加路由链接:<router-link>
是路由中提供的标签,默认会被渲染为a标签,to属性默认被渲染为href属性,to属性的值会被渲染为#开头的hash地址
<!-- 通过router-link标签链接跳转,访问组件 -->
<router-link to="/login">登录</router-link>
<router-link to="/user">用户中心</router-link>
3.添加路由填充位(路由占位符)
<router-view></router-view>
4.定义路由组件
// 定义组件
// 登录组件
let login = {
template:`
<div>
<h1>我是登录页面</h1>
</div>
`
}
// 用户中心组件
let user = {
template:`
<div>
<h1>我是用户中心页面</h1>
</div>
`
}
5.配置路由规则并创建路由实例
// 配置路由规则并创建路由实例
let myrouter = new VueRouter({
// routes是路由规则数组
//每一个路由规则都是一个对象,对象中至少包含path和component两个属性
//path表示 路由匹配的hash地址,component表示路由规则对应要展示的组件对象
routes:[
{
path:'/login',
component:login
},
{
path:'/user',
component:user
}
]
})
6.将路由挂载到Vue实例中
// 根组件
// 将路由挂载到Vue实例中
let vm = new Vue({
el:'#app',
data:{
},
//通过router属性挂载路由对象
// router:router,
// router,
router:myrouter,
methods:{
},
components:{
login,
user
}
})
案例效果图:
完整代码演示:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.先引入vue -->
<script src="./js/vue.js"></script>
<!-- 2.再引入vue-router -->
<script src="./js/vue-router.js"></script>
</head>
<body>
<div id="app">
<!-- 通过router-link标签链接跳转,访问组件 -->
<router-link to="/login">登录</router-link>
<router-link to="/user">用户中心</router-link>
<router-view></router-view>
</div>
<script>
// 特别注意:要先有组件,然后 我们才能 去配置 各个组件对应的路由规则
// 定义组件
// 登录组件
let login = {
template:`
<div>
<h1>我是登录页面</h1>
</div>
`
}
// 用户中心组件
let user = {
template:`
<div>
<h1>我是用户中心页面</h1>
</div>
`
}
// 配置路由规则并创建路由实例
let myrouter = new VueRouter({
// routes是路由规则数组
//每一个路由规则都是一个对象,对象中至少包含path和component两个属性
//path表示 路由匹配的hash地址,component表示路由规则对应要展示的组件对象
routes:[
{
path:'/login',
component:login
},
{
path:'/user',
component:user
}
]
})
// 根组件
// 将路由挂载到Vue实例中
let vm = new Vue({
el:'#app',
data:{
},
//通过router属性挂载路由对象
// router:router,
// router,
router:myrouter,
methods:{
},
components:{
login,
user
}
})
</script>
</body>
</html>
1.1.3 重定向
路由重定向:可以通过路由重定向为页面设置默认展示的组件
在路由规则中添加一条路由规则即可,如下:
// 配置路由规则并创建路由实例
let myrouter = new VueRouter({
// routes是路由规则数组
//每一个路由规则都是一个对象,对象中至少包含path和component两个属性
//path表示 路由匹配的hash地址,component表示路由规则对应要展示的组件对象
routes:[
{
//path设置为/表示页面最初始的地址 / ,redirect表示要被重定向的新地址,设置为一个路由即可
path:'/',
redirect:'/login'
},
{
path:'/login',
component:login
},
{
path:'/user',
component:user
}
]
})
完整代码演示:
重定向是打开浏览器后会直接显示 默认展示的User组件
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<!-- 1.先引入vue -->
<script src="./js/vue.js"></script>
<!-- 2.再引入vue-router -->
<script src="./js/vue-router.js"></script>
</head>
<body>
<div id="app">
<!-- 通过router-link标签链接跳转,访问组件 -->
<router-link to="/login">登录</router-link>
<router-link to="/user">用户中心</router-link>
<router-view></router-view>
</div>
<script>
// 特别注意:要先有组件,然后 我们才能 去配置 各个组件对应的路由规则
// 定义组件
// 登录组件
let login = {
template:`
<div>
<h1>我是登录页面</h1>
</div>
`
}
// 用户中心组件
let user = {
template:`
<div>
<h1>我是用户中心页面</h1>
</div>
`
}
// 配置路由规则并创建路由实例
let myrouter = new VueRouter({
// routes是路由规则数组
//每一个路由规则都是一个对象,对象中至少包含path和component两个属性
//path表示 路由匹配的hash地址,component表示路由规则对应要展示的组件对象
routes:[
{
//path设置为/表示页面最初始的地址 / ,redirect表示要被重定向的新地址,设置为一个路由即可
path:'/',
redirect:'/login'
},
{
path:'/login',
component:login
},
{
path:'/user',
component:user
}
]
})
// 根组件
// 将路由挂载到Vue实例中
let vm = new Vue({
el:'#app',
data:{
},
//通过router属性挂载路由对象
// router:router,
// router,
router:myrouter,
methods:{
},
components:{
login,
user
}
})
</script>
</body>
</html>
1.4 嵌套路由
1.4.1 什么是嵌套路由
-
嵌套路由概念
当我们使用 vue Router路由管理器,显示组件 ,并且 显示的组件中还有新的子级路由链接以及内容。
-
嵌套路由案例
核心代码:
// 配置路由规则并创建路由实例
Vue.use(VueRouter);
let router = new VueRouter({
// routes是路由规则数组
routes:[
// 每一个路由规则都是一个对象,对象中至少包含path和component两个属性
{
path:'/index',
component:Index
},
{
path:'/news',
component:News,
// 嵌套路由(子路由)
// children数组 表示 子路由规则
children:[
{
path:'/news/one',
// path:'/news/one',
component:One
},
{
path:'/news/two',
// path:'/news/two',
component:Two
}
]
}
]
})
完整代码演示: