使用路由:
1.引包
2.创建实例化VueRouter对象
3.匹配路由规则
4.挂载new Vue()实例化对象
1.基本使用
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="app"></div>
<script type="text/javascript" src="./node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.min.js"></script>
<script type="text/javascript">
var Login = {
data(){
return{
}
},
template:`
<div>
我是登录页面
</div>
`
};
var Register = {
data(){
return{
}
},
template:`
<div>
我是注册页面
</div>
`
};
var router = new VueRouter({
routes:[
{
path:"/login",
component:Login
},
{
path:"/register",
name:'register', //命名路由
component:Register
},
]
});
//引入vue-rouuter模块,会抛出两个全局组件
//1.router-link ==> a to==>href
//2.router-view==>路由匹配组件出口
var App = {
template:`
<div>
<!--
<a herf="">登录页面</a>
<a herf="">注册页面</a>
-->
<router-link to="/login">登录页面</router-link>
<router-link :to="{name:'register'}">注册页面</router-link>
<router-view></router-view>
</div>
`
};
var vm = new Vue({
el:'#app',
data(){
return{
}
},
//挂载子组件
components:{
App
},
router,
//父组件可以直接使用
template:`
<App></App>
`
});
</script>
</body>
</html>
2.路由参数
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="app"></div>
<script type="text/javascript" src="./node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.min.js"></script>
<script type="text/javascript">
var UserParams = {
data(){
return{
}
},
template:`
<div>
我是用户1
</div>
`
,
created(){
//抛出两个对象,挂载到Vue实例化对象
console.log(this.$router);
console.log(this.$route);
console.log(this.$route.params.id);
}
};
var UserQuery = {
data(){
return{
}
},
template:`
<div>
我是用户2
</div>
`
};
var router = new VueRouter({
routes:[
{
//动态路由 params
path:"/user/:id",
name:'userP',
component:UserParams
},
{
path:"/user",
name:'userQ',
component:UserQuery
},
]
});
//引入vue-rouuter模块,会抛出两个全局组件
//1.router-link ==> a to==>href
//2.router-view==>路由匹配组件出口
var App = {
template:`
<div>
<router-link :to="{name:'userP',params:{id:1}}">用户1</router-link>
<router-link :to="{name:'userQ',query:{userId:2}}">用户2</router-link>
<router-view></router-view>
</div>
`
};
var vm = new Vue({
el:'#app',
data(){
return{
}
},
//挂载子组件
components:{
App
},
router,
//父组件可以直接使用
template:`
<App></App>
`
});
</script>
</body>
</html>
3.嵌套路由
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
</head>
<body>
<div id="app"></div>
<script type="text/javascript" src="./node_modules/vue/dist/vue.min.js"></script>
<script type="text/javascript" src="./node_modules/vue-router/dist/vue-router.min.js"></script>
<script type="text/javascript">
var Home = {
template:`
<div>
首页内容
<br/>
<router-link to='/home/song'>歌曲</router-link>
<router-link to='/home/movie'>电影</router-link>
<router-view></router-view>
</div>
`
};
var Song = {
template:`
<div>歌曲内容</div>
`
};
var Movie = {
template:`
<div>电影内容</div>
`
};
var router = new VueRouter({
routes:[
{
path:"/home",
name:'home',
component:Home,
children:[
{
path:"song", //无需加斜杠。因为上一个home后面会自动加斜杠
component:Song,
},
{
path:"movie",
component:Movie,
},
]
},
]
});
//引入vue-rouuter模块,会抛出两个全局组件
//1.router-link ==> a to==>href
//2.router-view==>路由匹配组件出口
var App = {
template:`
<div>
<router-link :to="{name:'home'}">首页</router-link>
<router-view></router-view>
</div>
`
};
var vm = new Vue({
el:'#app',
data(){
return{
}
},
//挂载子组件
components:{
App
},
router,
//父组件可以直接使用
template:`
<App></App>
`
});
</script>
</body>
</html>