App.vue 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <template>
  2. <div id="app">
  3. <nav>
  4. <!-- 页面导航的方式:1 声明式导航 -->
  5. <!-- 在VueRouter中内置了 router-link组件 可以完成 声明式导航。通过 绑定to属性来指定导航模板地址 -->
  6. <router-link to="/">Home</router-link> |
  7. <router-link to="/about">About</router-link> |
  8. <a href="#/about">关于</a> | <a href="/about">关于-错误</a> |
  9. <!-- router-link组件 对比 A标签 -->
  10. <!-- A. to属性直接绑定目标地址,router-link会根据路由模式 自动选择是否添加 "#";a 的话 需要自己手动选择是否添加-->
  11. <!-- B. a标签的href属性只能绑定 字符串类型;而to属性则可以绑定对象类型(路由信息对象) -->
  12. <router-link :to="{ path: '/about' }">关于</router-link> |
  13. <router-link :to="{ name: 'about' }">关于</router-link> |
  14. <!-- 下面 router-link组件添加了 replace属性。设置 replace 属性的话,当点击时,会调用 router.replace() 而不是 router.push(),于是导航后不会留下 history 记录。 -->
  15. <router-link :to="{ name: 'about' }" replace="">关于</router-link> |
  16. <!-- 当 需要在页面间传参时 对象的绑定语法 会 比直接绑定字符串 更灵活 更简单 -->
  17. <!-- 页面导航的方式:2 编程(命令)式导航,就是通过router实例的方法来完成页面间跳转 -->
  18. <button @click="$router.push('/about')">关于</button> |
  19. <button @click="$router.push({ path: '/about' })">关于</button> |
  20. <button @click="$router.push({ name: 'about' })">关于</button> |
  21. <!-- router.push PK router.replace -->
  22. <!-- 跟 router.push 很像,唯一的不同就是,它不会向 history 添加新记录,而是跟它的方法名一样 —— 替换掉当前的 history 记录。 -->
  23. <!-- router.go(n) 这个方法的参数是一个整数,意思是在 history 记录中向前或者后退多少步,类似 window.history.go(n)。 -->
  24. <!-- router.forward ==> router.go(1) -->
  25. <!-- rotuer.back => router.go(-1) -->
  26. </nav>
  27. <router-view />
  28. </div>
  29. </template>
  30. <script>
  31. /**
  32. *! 页面栈
  33. ** 在VueRouter中,当页面跳转时 会有一个数据结构(页面栈)来存储所有用户导航过的页面。
  34. */
  35. export default {
  36. name: 'App',
  37. };
  38. </script>
  39. <style>
  40. #app {
  41. font-family: Avenir, Helvetica, Arial, sans-serif;
  42. -webkit-font-smoothing: antialiased;
  43. -moz-osx-font-smoothing: grayscale;
  44. text-align: center;
  45. color: #2c3e50;
  46. }
  47. nav {
  48. padding: 30px;
  49. }
  50. nav a {
  51. font-weight: bold;
  52. color: #2c3e50;
  53. }
  54. nav a.router-link-exact-active {
  55. color: #42b983;
  56. }
  57. </style>