• Vue--Router--嵌套路由(children)的用法


    原文网址:Vue--Router--嵌套路由(children)的用法_IT利刃出鞘的博客-CSDN博客

    简介

    说明

            本文介绍Vue Router的嵌套路由的用法。

            嵌套路由就是父路由里面嵌套他的子路由,父路由有自己的路由导航和路由容器(router-link、router-view),通过配置children可实现多层嵌套。(router-view必须要有,否则点击了router-link后,路径会变化,但页面不改变)。

    使用场景

            嵌套路由用于实现页中页效果。例如:

    • 用户页面中,有登录页面和注册页面,这两个页面通过标签切换。
      • 此时:用户页面是父路由,登录和注册页面是子路由
    • 后台管理页面中,布局都是同一套,只是中间的内容部分改变。(例如:vue-element-admin
      • 此时:整个布局是父路由,中间的内容页面是子路由。

    官网网址

    https://router.vuejs.org/zh/guide/essentials/nested-routes.html

    示例

    需求:写一个用户页面,里边有登录页面和注册页面,这两个页面通过标签切换。

    路由配置

    router/index.js

    1. import Vue from 'vue'
    2. import VueRouter from 'vue-router'
    3. import User from '../views/user/User'
    4. import Login from '../views/user/Login'
    5. import Register from '../views/user/Register'
    6. Vue.use(VueRouter)
    7. const routes = [
    8. {
    9. path: '/',
    10. name: 'Home',
    11. redirect: User
    12. },
    13. {
    14. path: '/user',
    15. name: 'User',
    16. component: User,
    17. children: [
    18. {
    19. path: 'login',
    20. name: 'Login',
    21. component: Login
    22. },
    23. {
    24. path: 'register',
    25. name: 'Register',
    26. component: Register
    27. }
    28. ]
    29. }
    30. ]
    31. const router = new VueRouter({
    32. routes
    33. })
    34. export default router

    用户页面(父页面)

    User.vue

    1. <template>
    2. <div class="outer">
    3. <h2>这是用户页面h2>
    4. <router-link :to="{name: 'Login'}">登录router-link> |
    5. <router-link :to="{name: 'Register'}">注册router-link>
    6. <router-view>router-view>
    7. div>
    8. template>
    9. <script>
    10. export default {
    11. name: 'User'
    12. }
    13. script>
    14. <style scoped>
    15. .outer {
    16. margin: 20px;
    17. border: 2px solid red;
    18. padding: 20px;
    19. }
    20. style>

    登录页面(子页面)

    Login.vue

    1. <template>
    2. <div class="outer">
    3. <h3>这是登录页面h3>
    4. div>
    5. template>
    6. <script>
    7. export default {
    8. name: 'Login'
    9. }
    10. script>
    11. <style scoped>
    12. .outer {
    13. margin: 20px;
    14. border: 2px solid blue;
    15. padding: 20px;
    16. }
    17. style>

    注册页面(子页面)

    Register.vue

    1. <template>
    2. <div class="outer">
    3. <h3>这是注册页面h3>
    4. div>
    5. template>
    6. <script>
    7. export default {
    8. name: 'Register'
    9. }
    10. script>
    11. <style scoped>
    12. .outer {
    13. margin: 20px;
    14. border: 2px solid blue;
    15. padding: 20px;
    16. }
    17. style>

    测试

    访问:http://192.168.0.104:8080/

    结果:

    点击“登录”/“注册”:

    子路由的path前加“/”

            如果子路由的path的最前边有“/”,则不需要加父路由的路径即可访问此子组件。

    例如,修改上边的“路由配置”,将path: 'login',改为path: '/login',则登录页面可以这样访问:

    http://192.168.0.104:8080/#/login

    示例

    router/index.js:

    1. import Vue from 'vue'
    2. import VueRouter from 'vue-router'
    3. import User from '../views/user/User'
    4. import Login from '../views/user/Login'
    5. import Register from '../views/user/Register'
    6. Vue.use(VueRouter)
    7. const routes = [
    8. {
    9. path: '/',
    10. name: 'Home',
    11. redirect: User
    12. },
    13. {
    14. path: '/user',
    15. name: 'User',
    16. component: User,
    17. children: [
    18. {
    19. path: '/login',
    20. name: 'Login',
    21. component: Login
    22. },
    23. {
    24. path: 'register',
    25. name: 'Register',
    26. component: Register
    27. }
    28. ]
    29. }
    30. ]
    31. const router = new VueRouter({
    32. routes
    33. })
    34. export default router

    测试

  • 相关阅读:
    漏洞复现-Apache Druid 任意文件读取 _(CVE-2021-36749)
    基于k8s的CI/CD的实现
    Docker 大势已去,Podman 即将崛起(荣耀典藏版)
    【LocalAI】(13):LocalAI最新版本支持Stable diffusion 3,20亿参数图像更加细腻了,可以继续研究下
    榛子云短信验证平台与springboot集成的短信验证
    性能测试工具:如何学习JMeter?
    Safetynet论文精读
    c语言进阶 数组在内存中的存储(下)
    初识Java 14-1 测试
    单位固定资产应该怎么管理
  • 原文地址:https://blog.csdn.net/feiying0canglang/article/details/126196561