• vue路由


    一、Vue3.x 中的路由
    路由可以让应用程序根据用户输入的不同地址动态挂载不同的组件

    npm install vue-router@next
    

    二、路由的基本配置
    1、安装路由模块

    npm install vue-router@next
    

    2、新建组件

    3、配置路由

    4、挂载路由

    5、渲染组件
    App.vue 中通过 router-view 渲染组件

    三、动态路由
    1、配置动态路由

    const router = createRouter({
        // 4. Provide the history implementation to use. We are using the hash history for simplicity here.
        routes: [
            { path: '/home', component: Home },
            { path: '/news', component: News },
            { path: '/user', component: User },
            // { path: '/newscontent/:aid', component: NewsContent },
            { path: '/newscontent', component: NewsContent }
        ]
        // short for `routes: routes`
    })
    

    2、路由跳转

    <li v-for="(item, index) in list" :key="index">
        <router-link :to="`/newsContent/${index}`">{{itme}}</router-link>
    </li>
    

    3、获取路由

    this.$route.params
    

    四、Get 传值

    <router-link to="/newsContent?id=2">Get传值<router-link>
    
    this.$route.query
    

    五、路由编程式导航(JS 跳转路由)

    this.$router.push({path: 'news'})
    
    this.$router.push({
        path: '/newsContent/123'
    })
    

    六、路由 HTML5 History 模式和 hash 模式
    6.1、 hash 模式

    import {createRouter, createWebHashHistory} from 'vue-router'
    const router = createRouter({
        // 4. Provide the history implementation to use. We are using the hash history for simplicity here.
        // history: createWebHashHistory(),  //hash模式
        history: createWebHashHistory(),
        routes: [
            { path: '/home', component: Home },
            { path: '/news', component: News },
            { path: '/user', component: User },
            // { path: '/newscontent/:aid', component: NewsContent },
            { path: '/newscontent', component: NewsContent }
        ]
        // short for `routes: routes`
    })
    

    'http://localhost:8080/#/news'

    如果把上面的路由改变成下面方式:
    'http://localhost:8080/news'
    我们就可以使用 HTML5 History 模式

    6.2、HTML5 History 模式

    import {createRouter, createWebHistory} from 'vue-router'
    const router = createRouter({
        history: createWebHistory(), //h5 History
        routes: [
            { path: '/home', component: Home },
            { path: '/news', component: News },
            { path: '/user', component: User },
            // { path: '/newscontent/:aid', component: NewsContent },
            { path: '/newscontent', component: NewsContent }
        ]
        // short for `routes: routes`
    })
    

    七、命名路由
    有时候,通过一个名称来标识一个路由显得更方便一些,特别是在链接一个路由,或者是这行一些跳转的时候。你可以在创建 Router 实例的时候,在 routes 配置中给某个路由设置名称。

    const router = new VueRouter({
        routes: [
            {
                path: '/usr/:userId',
                name: 'user',
                component: User
            }
        ]
    })
    

    要链接到一个命名路由,可以给 router-link 的 to 属性传一个对象:

    <router-link :to="{name: 'user', params: {userId: 123}}">User</router-link>
    

    这跟代码调用 router.push()是一回事:

    router.push({name: 'user', params: {userId: 123}})
    

    这两种方式都会把路由导航到/user/123 路径。

    this.$router.push({name: 'content', query: {aid:222}})
    

    八、路由重定向
    重定向也在 routes 配置中完成,要从重定向/a 到/b

    九、路由别名
    重定向是指用户访问时/home,URL 将被替换/,然后与匹配/。但是什么事别名?
    别名/as/home 表示用户访问时/home,URL 保持不变/home,但将被匹配,就像用户正在访问时一样/。
    以上内容可以在路由匹配中表示为:

    const routes = [{path: '/', component: Homepage, alias: '/home'}]
    

    别名使你可以自由地将 UI 结构映射到任意 URL,而不受配置的嵌套结构的约束。使别名以 a 开头,/以使路径在嵌套路由中绝对的,你深圳可以将两者结合起来,并未数组提供多个别名

    const routes = [{
        path: '/users',
        component: UsersLayout,
        children: {
           // this will render the UserList for these 3 URLs
           // - /users
           // - /users/list
           // - /people
            {path: '', compoent: UserList, alias: ['/pepole', 'list']}
        }
    }]
    

    如果你的路线包含参数,请确保将其包含在任何绝对别名中

    十、嵌套路由
    配置 News 组件的子组件

    1、新建 news/Add.vue

    路由配置地址:
    https://router.vuejs.org/zh/guide/essentials/redirect-and-alias.html#重定向

    持续更新中......

    砥砺前行
  • 相关阅读:
    洛谷 P2015 二叉苹果树
    Codeforces 1220D Alex and Julian (数论)
    算法-图(1)Dijkstra求最短路径
    计算机网络-网络层(3)DHCP协议
    计算机网络-网络层(2)NAT协议
    计算机网络-网络层(1)IPv4和IPv6
    计算机网络-网络层(0)网络层综述
    计算机网络-传输层(3)TCP协议与拥堵控制
    计算机网络-传输层(2)流水线协议和滑动窗口协议
    计算机网络-传输层(1)UDP协议
  • 原文地址:https://www.cnblogs.com/lhongsen/p/14891719.html
Copyright © 2020-2023  润新知