当前位置:首页 > 技术分析 > 正文内容

VUE-router

ruisui883个月前 (01-12)技术分析24

七.Vue-router

1、什么是vue-router

vue-router是vue.js官方路由管理器。vue的单页应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。

传统页面切换是用超链接a标签进行切换。但vue里是用路由,因为我们用Vue做的都是单页应用,就相当于只有一个主的index.html页面,所以你写的<a></a>标签是不起作用的,你必须使用vue-router来进行管理。

2、 安装vue-router

vue-router是一个插件包,所以我们还是需要用npm来进行安装的。打开命令行工具,进入你的项目目录,输入下面命令。

npm install vue-router --save-dev 

如果你安装很慢,也可以用cnpm进行安装,如果你在使用vue-cli中已经选择安装了vue-router,那这里不需要重复安装了。

3、在 main.js中引入

4、vue-router的使用

4.1 给组件或页面定义路由

4.2路由跳转的方式

方式1:

 <router-link to="{path:'/editUser',query:{id:user.id}}"></router-link>   

接收参数:

接收的页面中的vue对象中:  this.$route.query.id

方式2:

this.$router.push({path:'/users'})

完整案例:

创建News.vue组件

<template>
    <div>
        这是新闻列表页
        <li v-for="news in newsList" :key="news.id">
               <router-link :to="{path:'/newsInfo',query:{id:news.id}}"> {{news.title}}</router-link>
        </li>
    </div>
</template>

<script>

export default {
       name: "News",
       data:function(){
           return {
              newsList:[
                   {
                       id:"1",
                       title:"新闻1",
                       content:"新闻1的内容"

                   },
                   {
                        id:"2",
                       title:"新闻2",
                       content:"新闻2的内容"

                   }
              ]
           }
       }

}
</script>



创建NewsInfo.vue组件

<template>
    <div>
    {{news.content}}
        
    </div>
</template>

<script>

export default{

    name:"NewsInfo",
    data(){
        return {

            news:{
            id:"",
            title:"",
            content:""
            }
        }
    },
    mounted(){
         
         //获取传过来的参数id

          this.news.id= this.$route.query.id

          var newsList=[
                   {
                       id:"1",
                       title:"新闻1",
                       content:"新闻1的内容"

                   },
                   {
                        id:"2",
                       title:"新闻2",
                       content:"新闻2的内容"

                   }
              ]

              var index = newsList.findIndex( item => {
                        if(this.news.id == item.id){
                            return true;
                        }
                    });

             this.news=newsList[index]         

        

    }

}

</script>

设置路由:

import { createRouter, createWebHashHistory } from "vue-router";
//import Home from "../views/Home.vue";

const routes = [
 
  {
    path:"/",
    name:"News",
    component:()=>import("../views/News.vue")
  },
  {
    path:"/newsInfo",
    name:"NewsInfo",
    component:()=>import("../views/NewsInfo.vue")
  }
  
];

const router = createRouter({
  history: createWebHashHistory(),
  routes,
});

export default router;

设置App.vue主组件

<template>
  <div>
    <!-- <router-link to="/">Home</router-link> |
    <router-link to="/about">About</router-link> -->
     <!-- 展示当前路径对应的组件内容 -->
     <router-view />
  </div>
 
</template>

<style lang="scss">
#app {
  font-family: Avenir, Helvetica, Arial, sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-align: center;
  color: #2c3e50;
}

#nav {
  padding: 30px;

  a {
    font-weight: bold;
    color: #2c3e50;

    &.router-link-exact-active {
      color: #42b983;
    }
  }
}
</style>

4.3 a和router-link的区别

a标签

点击a标签从当前页面跳转到另一个页面
通过a标签跳转,页面就会重新加载,相当于重新打开了一个网页

router-link

通过router-link进行跳转不会跳转到新的页面,不会重新渲染,它会选择路由所指的组件进行渲染

总结

通过a标签和router-link对比,router-link避免了重复渲染,不像a标签一样需要重新渲染减少了DOM性能的损耗

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/205.html

标签: vue路由传值
分享给朋友:

“VUE-router” 的相关文章

2021最全VUE面试题,奥利给

1. vue-router用过没,哪些常用的钩子函数路由钩子的执行流程,钩子函数种类有:全局守卫、路由守卫、组件守卫。首页可以控制导航跳转, beforeEach , afterEach 等,?般?于页? title 的修改。?些需要登录才能调整??的重定向功能。beforeEach 主要有3个参数...

祸害阿里云宕机3小时的IO HANG究竟是什么?

本文来自微信公号“CSDN”(ID:CSDNnews),作者 | 王知无, 责编| 郭 芮。2019年3月3日凌晨,微博炸锅,有网友反映说阿里云疑似出现宕机,华北很多互联网公司受到暴击伤害,APP、网站全部瘫痪,我自己的朋友圈和微信群里也有好友反馈,刚刚从被窝被叫起来去修Bug,结果发现服务器登不上...

摄影后期必看 | PS插件camera raw 16.4教程 | 范围蒙版

范围蒙版Camera Raw 【蒙版】模块中提供了三个范围蒙版工具,可以通过特定的范围来创建蒙版。此次新增的【范围蒙版】大大加强了acr插件对局部调整的能力。点击下拉小箭头可以看到【颜色范围】,可用于快速选择想要编辑的颜色。快捷键:Shift + C【明亮度范围】,可用于快速选择想要调整的明亮度。快...

2024最新版:前端性能优化方案汇总

前端训练营:1v1私教,终身辅导计划,帮你拿到满意的 offer。 已帮助数百位同学拿到了中大厂 offer。欢迎来撩~~~~~~~~Hello,大家好,我是 Sunday。前端性能优化一直是很多同学非常关注的问题,在日常的面试中也是经常会被问到的点。所以今天咱们就花一点时间来了解一下2024最新的...

Vue实现动态路由

通常我们在vue项目中都是前端配置好路由的,但在一些项目中我们可能会遇到权限控制,这样我们就涉及到动态路由的设置了。动态路由设置一般有两种:(1)、简单的角色路由设置: 比如只涉及到管理员和普通用户的权限。通常直接在前端进行简单的角色权限设置(2)、复杂的路由权限设置: 比如OA系统、多种角色的权限...

VUE3+JAVA商城源码小程序APP商城

三勾小程序商城基于springboot+element-ui+uniapp打造的面向开发的小程序商城,方便二次开发或直接使用,可发布到多端,包括微信小程序、微信公众号、QQ小程序、支付宝小程序、字节跳动小程序、百度小程序、android端、ios端。软件架构后端: springboot2.3.12管...