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/张三">去登录,并传值</router-link> <br>
<router-link :to="'/login/'+msg">去登陆,传输入值</router-link>
</h1>
</div>
</template>
<script>
var MainPage = Vue.component("mainCom", {
template: '#main',
data(){ return{ msg: "" } }
})
var LoginPage = Vue.component("loginCom", {
// 动态url路径传值, 会传入$route.params字段
template: "<h1>登录页:{{$route.params.name}}</h1>",
created() {
// 在路由跳转的组件中会生成一个$route对象,记录路由跳转信息,可用于路由传值和路由监听
console.log(this.$route)
},
})
const router = new VueRouter({
routes:[
{path:'/', component: MainPage},
// 在路由配置中, 把路径后添加 /:变量名, 这种写法的路径叫动态url也叫友好型url
// 在正常的url路径后添加/:, 路径不变, 可添加数据, 用于路径传值
// "/login/:name" 表示/login路径下传入一个变量名为name的值, 多个值/:name/:age
{path:"/login/:name", component: LoginPage},
// 路由设置动态路径后, 普通路径/login, 访问不到动态路由地址, 所以, 如果需要的情况下,普通路径和动态路径都要写
{path:"/login", component: LoginPage}
]
})
new Vue({
el: '#myApp',
router
})
// 总结: 路由传值方式二: 动态路由/动态url/友好url传值
// 1, 配: 在路由配置信息中, 把路径后添加 /:变量名
// {path:"/login/:name", component: LoginPage}
// 2, 传: 在发送数据的组件中router-link路径后使用/拼接数据 传值
//<router-link to="/login/张三"></router-link>
// 3, 接: 在接收数据的组件中, 使用this.$route.params接收数据
// <h1>{{$route.params.name}}</h1>
</script>
</body>