首页 > 其他分享 >vue-router

vue-router

时间:2022-12-22 00:11:46浏览次数:42  
标签:vue link router id 路由 页面

七.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性能的损耗
文章目录  

七.Vue-router

1、什么是vue-router

   

2、 安装vue-router

 

3、在 main.js中引入

 

4、vue-router的使用

4.1 给组件或页面定义路由

 

4.2 路由跳转的方式

                                 

4.3 a和router-link的区别

             

标签:vue,link,router,id,路由,页面
From: https://www.cnblogs.com/daimenglaoshi/p/16997481.html

相关文章

  • vue中webpack环境中动态注册插件
    //webpack动态引入文件constrequireComonents=require.context("./",true,/\.vue$/);//Vue提供的install方法进行插件的注册/**install方法第一个参数是vue......
  • [vue项目] 后台管理 11111111111111111
    文章目录​​gitee地址​​​​登录业务解析​​​​退出登录​​​​模板结构图​​​​路由的搭建​​​​品牌管理​​​​table数据渲染​​​​分页器​​​​点击添加......
  • [vue] DataV 组件
    http://datav.jiaminghi.com/guide/......
  • Vue3.0 生命周期
    所有生命周期钩子的this上下文都是绑定至实例的。beforeCreate:在实例初始化之后、进行数据帧听和事件/侦听器的配置之前同步调用。created:实例创建完成,主要包括数据帧听......
  • vue-router3,点击相同的路由,会报错NavigationDuplicated
    vue-router点击相同的路由链接会报错NavigationDuplicated{"_name":"NavigationDuplicated","name":"NavigationDuplicated","message":"Navigatingto......
  • Vite + Vue3导入 vue-i18n 插件
    使用Vite+Vue3导入vue-i18n插件Step1下载vue-i18n插件npminstallvue-i18nStep2新建local文件夹,创建index.jsindex.jsimport{createI18n}from"v......
  • Vue-router4.0接口快速识别
    Vue-router4.0接口快速识别<router-link> :将会被渲染a标签属性名属性类型属性作用tostring/object相当于跳转调用router.push(string/object)replacebo......
  • 基于Springboot+Mybatis+mysql+element-vue高校就业管理系统
    @目录一、系统介绍二、功能展示1.用户登陆注册2.个人信息(学生端)3.查看企业岗位信息(学生端)4.我的应聘(学生端)5.学生信息管理(辅导员)6.三方协议书审核(辅导员)7.查看班级就业......
  • 基于Springboot+Element-Vue-Admin实现简单权限管理系统
    @目录一、系统介绍二、功能展示1.用户登陆2.用户管理3.权限管理、权限设置4.菜单管理三、数据库展示四、其它1.数据库表2.获取源码一、系统介绍系统主要功能:系统实现了用......
  • 启动vue项目报错:Error: The project seems to require yarn but it's not installed
    问题:将项目拷贝到另一台电脑启动时报错Error:Theprojectseemstorequireyarnbutit'snotinstalled解决方法:1.删除项目中的yarn.lock文件2.终端执行npminsta......