<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<title>Title</title>
<meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
<div id="app">
</div>
<script src="vue.js"></script>
<script src="vue-router.js"></script>
<script>
//如果以后是模块化编程,Vue.proptotype.$VueRouter = VueRouter
// Vue.use(VueRouter)
//路由范式:
//http://127.0.0.1:8080/index/user
//http://127.0.0.1:8080/user/1 params
//http://127.0.0.1:8080/user/2
//http://127.0.0.1:8080/user?user_id =1 query
const Home = {
data() {
return {}
},
template: `<div>我是首页</div>`
}
const User = {
data() {
return {
user_id: null
}
},
template: `<div>我是用户{{user_id}}
<button @click = 'clickHandler'>跳转首页</button>
</div>`,
created() {
console.log(this.$route);
},
methods:{
//编程式导航
clickHandler(){
console.log(' this.$router', this.$router)
this.$router.push({
name:"Home",
// params:{
// courseId:courseId} //假如携带参数
})
}
},
watch: {
'$route'(to, from) {
// 对路由变化作出响应...
console.log('to',to)//去的对象
console.log(to.params.id);
console.log(from);//来的对象
this.user_id = to.params.id;
//发送ajax
}
}
}
//创建路由
const router = new VueRouter({
//定义路由规则
routes: [
{
path: '/user/:id', /与下面的id是对应的
name: 'User',
component: User
},
{
path: '/home',
name: 'Home',
component: Home
}
]
})
let App = {
data() {
return {}
},
// router-link和router-view 是vue-router 提供的两个全局组件
//router-view 是路由组件的出口
template: `
<div>
<div class="header">
<router-link :to = '{name:"User",params:{id:1}}'>用户1</router-link>
<router-link :to = '{name:"User",params:{id:2}}'>用户2</router-link>
</div>
<router-view></router-view>
</div>
`
}
new Vue({
el: '#app',
//挂载 路由对象
router,
data() {
return {}
},
template: `<App />`,
components: {
App
}
})
</script>
</body>
</html>
