• Web全栈探索,Vue基础系列,前端路由(四)


    一、vue-router命名路由

    1.什么是命名路由

    给路由规则起一个别名,即为 “命名路由”

    const router = new VueRouter({
        routes: [
           {
            path: '访问路径',
            // 别名代表当前路由规则,即 {} 内定义的路由规则
            name: '组件别名',
            component: 组件名
            }
        ]
    })
    
    
    
    <router-link :to="{ name: '组件别名', params: { 参数列表 }}">组件名</router-link>

    2.代码示例

    <!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>
        <!-- 导入 vue 文件 -->
        <script src="../../js/vue.js"></script>
        <script src="../../js/vue-router.js"></script>
    </head>
    <body>
    <!-- 被 vm 实例所控制的区域 -->
    <div id="app">
        <!--通过 to 标签 中的 params 传递值-->
        <router-link :to="{ name: 'user', params: {id: 1, my_name: '小强'} }">User组件</router-link>
    
        <!-- 路由占位符 -->
        <router-view></router-view>
    </div>
    
    <script>
        const User = {
            props: ['id', 'my_name'],
            template: '<h1>用户id为: {{id}} -- 姓名为:{{my_name}}</h1>'
        }
    
        // 创建路由实例对象
        const router = new VueRouter({
            // 所有的路由规则
            routes: [
                {
                    // 命名路由
                    name: 'user',
                    path: '/user',
                    component: User,
    
                    // 通过 route.params 获取传递来的值
                    props: route => ({ my_name: route.params.my_name, id: route.params.id})
                }
            ]
        })
    
        // 创建 vm 实例对象
        const vm = new Vue({
            // 指定控制的区域
            el: '#app',
            data: {},
            // 挂载路由实例对象
            // router: router
            router
        })
    </script>
    </body>
    </html>
    

    二、编程式导航

    • this.$router.push('hash地址') ===> 跳转页面
    • this.$router.go(n) ===> 前进/后退 页面
    // 字符串(路径名称)
    router.push('/home')
    
    // 对象
    router.push({ path: '/home' })
    
    // 命名的路由(传递参数)
    router.push({ name: '/user', params: { userId: 123 }})
    
    // 带查询参数,变成 /register?name=xiaohong
    router.push({ path: '/register', query: { name: 'xiaohong' }})

    示例代码

    <!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>
        <!-- 导入 vue 文件 -->
        <script src="../../js/vue.js"></script>
        <script src="../../js/vue-router.js"></script>
    </head>
    <body>
    <!-- 被 vm 实例所控制的区域 -->
    <div id="app">
    
        <router-link :to="{ name: 'user', params: {id: 1, my_name: '小珍'} }">User3</router-link>
        <router-link to="/admin">管理界面</router-link>
        <!-- 路由占位符 -->
        <router-view></router-view>
    </div>
    
    <script>
        const User = {
            props: ['id', 'my_name'],
            template: `
                <div>
                    <h1>用户id为: {{id}} -- 姓名为:{{my_name}}</h1>
                    <button @click="goAdmin">跳转到管理界面</button>
                </div>`,
            methods: {
                goAdmin() {
                    // 跳转指定页面
                    this.$router.push('/admin')
                }
            },
        }
    
        const Admin = {
            template: `
                <div>
                    <h1>管理界面</h1>
                    <button @click="goBack">后退</button>
                </div>`,
            methods: {
                goBack() {
                    // 回退到上一个路由导航页面
                    // go函数传正数,则代表前进 n 步,传负数,则代表后退 n 步
                    this.$router.go(-1)
                }
            },
        }
    
        const router = new VueRouter({
            routes: [
                {
                    name: 'user',
                    path: '/user',
                    component: User,
                    // 在路由中利用函数传参
                    props: route => ({my_name: route.params.my_name, id: route.params.id})
                },
                {
                    path: '/admin',
                    component: Admin
                }
            ]
        })
    
        const vm = new Vue({
            el: '#app',
            data: {},
            router
        })
    </script>
    </body>
    </html>
    
    作者:蓝月

    -------------------------------------------

    个性签名:能我之人何其多,戒骄戒躁,脚踏实地地走好每一步

  • 相关阅读:
    SQL Server SQLHelper帮助类
    Winform 常用的方法
    SQL Server 插入含有中文字符串出现乱码现象的解决办法
    ComboBox 中 DisplayMember 和 ValueMember 都是具体干什么的?
    HTML常用标签属性使用
    虚拟机安装windows server 2012 R2
    VS2017生成带图标的QT项目方法
    QSS 记录
    QT qss资源文件与代码分离
    pgsql 服务遇见的问题记录
  • 原文地址:https://www.cnblogs.com/viplanyue/p/13573717.html
Copyright © 2020-2023  润新知