vue-router.js
<body>
<script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script>
<script src="./vue-router.js"></script>
<div id='myApp'>
<router-link to="/">主页</router-link> |
<router-link to="/login">登录</router-link>
<router-view></router-view>
</div>
<!-- 主页模板 -->
<template id="main">
<div>
<h1>
主页 <br>
<input v-model='msg'> <br>
<router-link to="/login?name=张三&age=20">去登录,并传值</router-link> <br>
<router-link :to="'/login?name='+msg">去登陆,传输入值</router-link>
<button @click="btnClick">去登录</button>
</h1>
</div>
</template>
<script>
var MainPage = Vue.component("mainCom", {
template: '#main',
data(){ return{ msg: "" } },
methods: {
btnClick(){
// 使用js代码实现路由跳转就是 编程式导航跳转
// router : 全局唯一的路由配置对象, 可用于路由跳转
// $route : 每一个路由跳转的组件都有的路由信息对象
router.push("/login"); // 直接跳转
// 跳转并传值
router.push("/login?name=张三")
router.push("/login/张三")
router.push({
path: "/login",
query: {name: "张三"}
})
router.push({
name: "myLogin",
params: {name: '张三'}
})
}
},
})
var LoginPage = Vue.component("loginCom", {
// url路径拼接键值对传值, 会传入$route.query字段
template: "<h1>登录页:{{$route.query.name}}-{{$route.query.age}}</h1>",
created() {
// 在路由跳转的组件中会生成一个$route对象,记录路由跳转信息,可用于路由传值和路由监听
console.log(this.$route)
},
})
const router = new VueRouter({
routes:[
{path:'/', component: MainPage},
{path:"/login", component: LoginPage}
]
})
new Vue({
el: '#myApp',
router
})
</script>
</body>