首页 > 编程语言 >Vue编程式导航

Vue编程式导航

时间:2024-08-27 15:17:05浏览次数:12  
标签:Vue 编程 let path 组件 router 导航 路由

编程式导航和上面说的声明式导航的区别在于,声明式导航是先写好便签,然后进行导航。

编程式导航通过代码直接进行了导航。

通过this.$router.push()这个方法来实现编程式导航, 当然也可以实现参数传递,这种编程式导航一般是用于按钮点击之后跳转。
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
       <h1>hello vue router</h1>
        <!-- 
            通过this.$router.push()这个方法来实现编程式导航,
            当然也可以实现参数传递,这种编程式导航一般是用于按钮点击之后跳转
         -->
         <h2>声明式导航</h2>
        <router-link to="/login">登录</router-link>
        <router-link to="/register">注册组件</router-link>
        <router-link to="/user/101">用户101</router-link>
        <router-link to="/user/102">用户102</router-link>
        <router-link to="/emp-select">员工查询</router-link>
        <router-link to="/emp-add">员工新增</router-link>
        <router-link to="/emp-delete">员工删除</router-link>
        <hr>
        <h2>编程式导航</h2>
        <button @click="doRedirect('login')">登录组件</button>
        <button @click="doRedirect('register')">注册组件</button>
        <button @click="doRedirect('user')">用户组件</button>
        <button @click="doRedirect('emp')">员工组件</button>
        <!-- 
            router-view组件
                当我们点击router-link之后,会根据路径去找对应的组件,找到对应的组件后,在router-view位置显示
         -->
         <router-view></router-view>
    </div>
    <script src="../js/vue.js"></script>
    <!-- 先引入vue的核心库,再引入router的核心库 -->
    <script src="../js/vue-router.js"></script>
    <script>
        // 1、定义组件
        const Login = {
            template:"<div><h1>登录组件</h1></div>"
        }

        let register = {
            template:"<div><h1>注册组件</h1></div>"
        }

        let User = {
            template:"<div><h1>用户组件{{$route.params.id}}</h1></div>",
            // 当使用路由参数是,例如:/user/101导航到/user102,想通组件实例将被重复使用,
            // 这意味着组件的生命周期钩子不会被调用
            // 如果想对路由参数变化做出相应,需要使用watch侦听器
            mounted () {
                console.log('User mounted');
            },
            watch: {
                /*
                侦听当前路由的变化,当路由变化时候,可以做出一些响应*/
                '$route'(to, from){
                    console.log(to,from);
                    console.log('$route监听了路由变化了');
                }
            }
        }

        let NotFount = {
            template:'<div><h1>页面没有找到</h1></div>',
        }

        let Index = {
            template:'<div><h1>欢迎使用本系统</h1></div>'
        }

        let Emp = {
            template:'<div><h1>员工组件</h1></div>'
        }
        let User = {
            template:'<div><h1>用户组件</h1></div>'
        }
        // 2、定义路由列表
        /*
            在router里面配置每一个路由,每一个路由就是一个对象
            path:表示路由路径,字符串,需要以/开头
            component:表示路由对应的组件
        */
        //路由列表的匹配模式是自上到下逐个匹配,匹配到了就执行
        //把带匹配的路径都进行放到后面

        let routes = [
            {
                path:'/login',component:Login
            },
            {
                path:'/register',component:register
            },
            {
                //*表示通配符
                path:'/user/:id',component:User
            },
            {
                //*表示通配符
                path:'/emp-*',component:Emp
            },
            {
                path:'/',component:Index
            },
            {
                path:'/*',component:NotFount
            },
        ]

        //3、创建router实例,当引入Vue.router之后,VueRouter就会成为全局函数
        let router = new VueRouter({
            //配置路由列表,配置项的名称routes
            routes:routes
        })

        
        let vm = new Vue({
            el : "#app",
            data : {
                
            },
            //4、将创建号的rouer实例,绑定给vue实例的router属性
            router,
            methods: {
                doRedirect(str) {
                    //this.$router.push('跳转路径') 
                    this.$router.push('/' + str);
                }
            }
        })
    </script>
</body>
</html>

 

标签:Vue,编程,let,path,组件,router,导航,路由
From: https://www.cnblogs.com/yansunda/p/18382751

相关文章

  • 【编程规范具体案例(基于Qt、微软、谷歌和AUTOSAR C++14 参考)】 C++ 编码规范 之并发篇
    目录标题并发目录12.并发编程规范12.1线程创建与管理规则12.1.1\[必须]明确定义线程的生命周期管理策略12.1.2\[必须]为关键线程设置明确的标识符12.1.3\[必须]在多线程环境中安全地处理异常12.2线程同步规则12.2.1\[必须]使用线程安......
  • Vue3项目启动失败的解决方案
    看了我创建Vue3项目的朋友们,你们是否也会出现以下情况呢,没事,我下面提供解决方案下载|Node.js中文网先把node版本安装到最新在vscode打开终端后输入yarn-s等安装好后输入yarndev启动项目即可项目启动成功了......
  • springboot+vue零食销售商城【程序+论文+开题】-计算机毕业设计
    系统程序文件列表开题报告内容研究背景随着互联网技术的飞速发展和消费者购物习惯的深刻变革,电子商务已成为推动全球经济增长的重要力量。在快节奏的现代生活中,零食作为日常消费的重要组成部分,其市场需求持续增长且日益多元化。然而,传统零食销售模式受限于地域、时间等因素......
  • Vant4+Vue3 实现年月日时分时间范围控件
    <van-popup v-model:show="showDatePick" position="bottom" :overlay-style="{zIndex:1000}"> <van-picker-group title="时间范围" :tabs="['开始日期','结束日期']" @confirm="on......
  • STL与泛型编程
    1.迭代器种类(1)inputiterator(2)outputiterator(3)forwarditerator(4)bidirectionaliterator(5)randomaccessiterator2.inputiterator信息从容器流入程序被称为输入,input迭代器被用于从容器中读取信息。Input迭代器只读,不能改写容器中的数据。input迭代器支持++操......
  • laravel11+vue编程
    文档视频地址https://www.youtube.com/watch?v=iGnlmxA7oM8&list=PL38wFHH4qYZXCW2rlBLNdHi5cv-v_qlXO视频代码https://github.com/JonVadar/YouTube_videos/tree/main/Webdeveloperpathvideos/laravel_Inertia_VueCSSfile:https://github.com/JonVadar/YouTube_videos......
  • 283:vue+openlayers 4326和3857坐标系下的分辨率区别
    作者:还是大剑师兰特,曾为美国某知名大学计算机专业研究生,现为国内GIS领域高级前端工程师,CSDN知名博主,深耕openlayers、leaflet、mapbox、cesium,canvas,echarts等技术开发,欢迎加微信(gis-dajianshi),一起交流。查看本专栏目录-本文是第283个示例文章目录一......
  • Vue 组件通信
    目录基本概念vue2组件通信1.props2.$emit3.provide和inject4.$refs 5.$parent和$children6.$attrs和$listeners​​​​​​​7.v-model8.Bus9.vuex vue3组件通信1.props2.$emit3.provide和inject4.expose和ref5.$parent 6.$attrs 7.v-model8.m......
  • 闲置物品|基于SprinBoot+vue的校园闲置物品交易平台(源码+数据库+文档)
    校园闲置物品交易平台目录基于SprinBoot+vue的校园闲置物品交易平台一、前言二、系统设计三、系统功能设计 5.1系统功能实现5.2管理员模块实现5.3用户模块实现四、数据库设计 五、核心代码 六、论文参考七、最新计算机毕设选题推荐八、源码获取:博主介绍:......
  • 计算机毕业设计django+vue共享自习室管理系统【开题+论文+程序】
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容研究背景:随着教育资源的日益紧张与学习需求的不断增长,共享自习室作为一种新型的学习空间,逐渐受到广大学生的青睐。它不仅为学生提供了一个安静、专......