vue-router.js
<style>
.router-link-exact-active {
background-color: red;
}
/* 路由组件的入场动画 */
.v-enter {
transform: translateX(200px)
}
.v-enter-active {
transition: 1s;
}
.v-enter-to {
transform: translateZ(0)
}
</style>
<body>
<!-- 步骤一: 在vue之后导入vue-router路由插件 -->
<script src='https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js'></script>
<script src="./vue-router.js"></script>
<div id='myApp'>
<!-- 步骤二: 在根组件模板中,添加路由跳转标签 -->
<!-- <a href="#/main">主页</a> |
<a href="#/login">登录</a> |
<a href="#/user">用户</a> -->
<!-- vue路由监视使用router-link组件代替a标签, 特点如下
1, router-link会被渲染成a标签, to属性渲染成href
2, to属性不用写#, 渲染到href上时会自动补全
3, 点击router-link时会自动添加router-link-exact-active和router-link-active这两个class值
-->
<router-link to="/main">主页</router-link>
<router-link to="/login">登录</router-link>
<router-link to="/user">用户</router-link>
<!-- 步骤六: 在根组件模板中, 添加路由出口: 路由组件渲染的位置 -->
<router-view></router-view>
<!-- 路由切换类似于动态组件,可以使组件销毁和创建, 保留数据可用keep-alive -->
<keep-alive>
<router-view></router-view>
</keep-alive>
<!-- 组件切换时,添加动画效果, 并保留组件数据 记住:transition在外 -->
<transition>
<keep-alive>
<router-view></router-view>
</keep-alive>
</transition>
</div>
<script>
// 步骤三: 创建路由控制分发跳转的组件
var MainPage = Vue.component("mainCom", { template: "<h1>这是主页</h1>" });
var LoginPage = Vue.component("loginCom", { template: "<h1>这是登录页<input></h1>" });
var UserPage = Vue.component("userCom", { template: "<h1>这是用户页</h1>" });
// Vue.component 返回值是组件的构造函数
console.log(MainPage, LoginPage, UserPage)
// 步骤四: 创建路由对象,配置路由信息
const router = new VueRouter({
// 在routes子字段下配置路由, 一个对象就一个路径的信息,
// path路径对应的是hash值,省略#, 一般以/开头
// component 值是路由对应的组件构造函数, 不是组件名
routes: [
{ path: "/main", component: MainPage },
{ path: "/login", component: LoginPage },
{ path: '/user', component: UserPage },
// 启动项目时,默认路径是/ , 可以把/这个路径绑定为主页
{
path: "/",
// 路由重定向, 可以修改路由跳转路径
redirect: "/main"
},
]
})
new Vue({
el: '#myApp',
// 步骤五: 把路由对象加入vue对象中
router,
data: {}
})
</script>
</body>