[ Vue-cli 安装 ]

  • 项目开发: npm install -g @vue/cli
  • 快速原型开发(对单个 *.vue 文件开发): npm install -g @vue/cli-service-global

[ 创建项目 ]

  • vue create Router-demo

[ 运行 ]

  • npm run serve

[ 目录 ]

  1. - public => 静态资源文件 html icon
  2. - src => 入口文件 组件 路由 自己配置的静态资源文件
  3. + assets => 自己配置的静态资源文件
  4. + components => 公共组件
  5. + router => 设置路由
  6. + views => 视图组件
  7. + App.vue => 所有组件的入口文件
  8. + main.js => 默认入口文件
  9. - .browserslistrc => 目标浏览器配置
  10. - .babel.config.js => babel 配置文件
  11. - .package.json => 构建脚本和依赖关系

Vue-router 配置

引入组件并全局使用路由

  1. /**
  2. * router/index.js
  3. */
  4. import Vue from 'vue';
  5. import Router from 'vue-router';
  6. // 1. 引入组件
  7. import Home from '@/views/Home.vue';
  8. import Profile from '@/views/Profile.vue';
  9. import User from '@/views/User.vue';
  10. Vue.use(Router) // 全局使用 Router路由可以在所有的组件中使用

定义路由

  1. /**
  2. * router/index.js
  3. */
  4. // 2. 设置路由映射表 将路由和组件关系映射起来
  5. const routes = [
  6. {
  7. path: '/', //
  8. name: 'home', // 命名路由
  9. component: Home
  10. },
  11. {
  12. path: '/profile',
  13. name: 'profile',
  14. component: Profile
  15. },
  16. {
  17. path: '/user',
  18. name: 'user',
  19. component: User
  20. },
  21. // 如果 path 都不匹配 ,指定跳转路径
  22. {
  23. path: '*',
  24. // redirect: '/', 或者
  25. redirect: {
  26. path:'/'
  27. }
  28. },
  29. ]

定义子路由

  1. {
  2. path: '/user',
  3. name: 'user',
  4. component: User,
  5. // 子级路由
  6. children: [
  7. {
  8. path: 'useradd',
  9. // 动态路由
  10. component: () => import('@/views/UserAdd.vue'),
  11. },
  12. {
  13. path: 'userlist',
  14. component: () => import('@/views/UserList.vue'),
  15. },
  16. {
  17. path: 'detail/:id',
  18. component: () => import('@/views/Detail.vue'),
  19. },
  20. ],
  21. },
  22. // 子路由 router 入口 to="/user/userlist"
  23. <router-link to="/user/userlist">用户列表</router-link>

创建 router 实例

  1. /**
  2. * router/index.js
  3. */
  4. // 3. 将 routes 放入 router 中进行渲染
  5. const router = new Router({
  6. mode: 'history', // 模式 其他值: "hash" | "history" | "abstract"
  7. base: process.env.BASE_URL,
  8. routes,
  9. })
  10. export default router

router 实例 注入到根实例进行渲染

  1. /**
  2. * src/main.js
  3. */
  4. import Vue from 'vue'
  5. import App from './App.vue'
  6. import router from './router'
  7. Vue.config.productionTip = false
  8. new Vue({
  9. router, // $royter(所有的方法) $route(所有的属性)
  10. render: h => h(App)
  11. }).$mount('#app')

router-link

  1. <!-- App.vue -->
  2. <template>
  3. <div id="app">
  4. <div id="nav">
  5. <!-- Router 入口 -->
  6. <!-- <router-link to="/">Home</router-link> | -->
  7. <!-- <router-link to="/profile">Profile</router-link> -->
  8. <!-- <router-link to="/user">User</router-link> -->
  9. <!-- Router 入口 动态写法 -->
  10. <router-link :to="{path: '/'}">Home</router-link> |
  11. <router-link :to="{name: 'profile'}">Profile</router-link>
  12. <router-link to="/user">User</router-link>
  13. </div>
  14. <!-- Router 出口 -->
  15. <router-view/>
  16. </div>
  17. </template>