<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Document</title> <script src="./js/vue.js"></script> <script src="./js/vue-router-3.0.1.js"></script> </head> <body> <div id="app"> <!-- 如果在路由中,使用查询字符串,则不需要修改 路由匹配规则 --> <router-link to="/login">登录</router-link> <router-link to="/register">注册</router-link> <!-- 容器 --> <router-view></router-view> </div> <script> var login = { // this默认指当前组件实例,在插值表达式中this可以省略 template: '<h1>登录组件</h1>', }; var register = { template: '<h1>注册组件</h1>' } var router = new VueRouter({ routes: [ { path: '/login',component: login}, { path: '/register',component: register}, ] }) //创建Vue实例,得到 ViewModel var vm = new Vue({ el: '#app', data: {}, methods: {}, router: router, //将路由规则挂载到vm实例中 watch:{ // 监听 this.$route.path watch监听非DOM元素的改变 '$route.path':function(newVal,oldVal){ // console.log(newVal + '---' + oldVal); if(newVal === '/login'){ console.log('欢迎进入登录页面'); }else if(newVal === '/register'){ console.log('欢迎进入注册页面'); } } } }); </script> </body> </html>