<!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 User = {
data() {
return {
user_id:null
}
},
template: `<div>我是用户{{ user_id}}</div>`,
created() {
console.log(111,this.$route); //路由信息对象
// 提醒一下,当使用路由参数时,例如从 /user/foo 导航到 /user/bar,原来的组件实例会被复用。因为两个路由都渲染同个组件,比起销毁再创建,复用则显得更加高效。不过,这也意味着组件的生命周期钩子不会再被调用。
},
watch: {
'$route'(to, from) {
// 对路由变化作出响应...
console.log(to.params.id);
console.log(222,from);
this.user_id = to.params.id;
//发送ajax
}
}
}
//创建路由
const router = new VueRouter({
//定义路由规则
routes: [
{
path: '/user/:id',
name: 'User',
component: User
}
]
})
let App = {
data() {
return {}
},
// $.router 路由对象
// $.route 路由信息对象
// 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>