首页 > 其他分享 >Vue-路由(vue-roter)

Vue-路由(vue-roter)

时间:2023-02-20 23:24:09浏览次数:31  
标签:vue name Vue SonSon 组件 router 路由 roter

1.路由的使用

1.路由的安装vue-router

npm i vue-router@3
vue3中使用router4版本,vue2中使用router3版本

2.应用路由插件

① 在src目录下创建router文件夹作为路由文件夹
② 在router文件夹下创建index.js 文件(该文件用于创建整个应用的路由器)
③ 编写index.js

import VueRouter from 'vue-router'	//路由插件的引入
//pages一般储存路由组件Son1.vue,Son2.vue
import Son1 from '../pages/Son1' //引入组件
import Son2 from '../pages/Son2' //引入组件
//创建一个路由器
const router = new VueRouter({
  routers:[
    {
      //此时项目集中已经提供 Son1.vue  Son2.vue  
      path:'/son1',    //path 为路径 
      component: Son1, //组件名
    }
    {
      path:'/son2',  //path 为路径 
      component: Son2, //组件名
    }
  ]
})

④ 在main.js中引入路由插件并使用

import VueRouter from 'vue-router'	//路由插件的引入
Vue.use(VueRouter)	//路由插件的使用
import router from './router' //引入创建的router文件夹下的index.js
new Vue({
  el:"#app",
  render: h=> h("App"),
  router,//此时vue中多了一个$router
})
⑤点击父组件中的链接,分别显示路由Son1和Son2
<template>
  <div>
    <div class="路由按钮">
      <!--       // 跳转时用 router-link 标签  -->
      <router-link to="/son1"> Son1 </router-link>
      <!--       // go展示哪一个路由 -->
      <router-link to="/son2"> Son2 </router-link>
    </div>
    <div class="路由展示区">
			<!--       //指定路由展示位置 -->
      <router-view>  </router-view> 
    </div>
  <div>
<!-- //当路由从Son1跳转到Son2时Son1组件被销毁,Son2组件加载-->
</template>

3.多级路由

要求:在一级路由Son2的基础上二级路由展示SonSon.vue组件。
① 在router文件夹下创建index.js 文件添加下属内容

import SonSon from '../pages/SonSon' //引入组件SonSon.vue
const router = new VueRouter({
  routers:[
    {
      path:'/son2',  //path 为路径 
      component: Son2, //组件名
      //children 添加孩子路由的配置项
      children:[
        {
          name:'SonSon',
          path:'sonson',//多级路由,此时路径不用写/
          component: SonSon,
        }
      ]
    }
  ]
})
② Son2.vue组件内容
<template>
  <div>
  	<router-link to="/son2/sonson"> 点击我路由展示SonSon.vue组件 </router-link>
    <router-view></router-view>
  </div>
</template>

4 路由传递参数

4.1 query传参

要求:用query传参,将路由Son2中的numData中的一些数据传给子路由SonSon组件SonSon.vue

<template>
  <div>
		<!-- to  的字符串写法  -->
  	<router-link :to="/son2/sonson?name=${numData.name}&age=${numData.age}"> 
      点击我路由展示SonSon.vue组件
    </router-link>
		<!--  to  的对象写法    -->
    
    <router-link :to="{
      path:'/son2/sonson',
      query:{
        name:numData.name,
        age:numData.age,
      }
    }"> <!-- path:'/son2/sonson', 可以用 name:'SonSon'-->
      点击我路由展示SonSon.vue组件
    </router-link>
    <router-view></router-view>
  </div>
</template>

<script>
  export default{
    name:'Son2',
    data(){
      return{
        numData:{
          name:'小何',
          age:'22',
          sex:'男'
        }
      },
    },
  }
</script>
<template>
  <div>
			<!--  $route表示当前路由,$router表示全部路由    -->
    	姓名:{{$route.query.name}}
      年龄:{{$route.query.age}}
  </div>
</template>

4.2params传参

要求:用params传参,将路由Son2中的numData中的一些数据传给子路由SonSon组件

import SonSon from '../pages/SonSon' //引入组件SonSon.vue
const router = new VueRouter({
  routers:[
    {
      path:'/son2',  //path 为路径 
      component: Son2, //组件名
      //children 添加孩子路由的配置项
      children:[
        {
          name:'SonSon',
          path:'sonson/:name/:age',//此时/:name/:age'为params传参的参数的占位符
          component: SonSon,
        }
      ]
    }
  ]
})
<template>
  <div>
		<!-- to  的字符串写法  -->
  	<router-link :to="/son2/sonson/${numData.name}/${numData.age}"> 
      点击我路由展示SonSon.vue组件
    </router-link>
		<!--  to  的对象写法    -->
    
    <router-link :to="{
      name:'SonSon',
      params:{
        name:numData.name,
        age:numData.age,
      }
    }"> <!-- params 传参,to的对象写法必须用 name:'SonSon'-->
      点击我路由展示SonSon.vue组件
    </router-link>
    <router-view></router-view>
  </div>
</template>

<script>
  export default{
    name:'Son2',
    data(){
      return{
        numData:{
          name:'小何',
          age:'22',
          sex:'男'
        }
      },
    },
  }
</script>
<template>
  <div>
			<!--  $route表示当前路由,$router表示全部路由    -->
    	姓名:{{$route.params.name}}
      年龄:{{$route.params.age}}
  </div>
</template>

4.3props传参

( 参考vue的6种基础通信方式)

5.的replace属性

① 作用:控制路由跳转时操控浏览器的历史记录
② 浏览器的历史纪录有两种写入方式 1.push 2.replace,push是追加历史记录,replace是替换历史记录。路由跳转默认为push
③ 开启replace模式

  1. 编程式路由导航

要求:不用router-link 实现路由的跳转

<template>
  <div>
    <button @click='showsonson'>点击我路由展示SonSon.vue路由组件</button>
    <router-view></router-view>
  </div>
</template>

<script>
  export default{
    name:'Son2',
    data(){
      return{
        numData:{
          name:'小何',
          age:'22',
          sex:'男'
        }
      },
    },
    methods:{
      showsonson(){
        this.$rouyer.path({
            name:'SonSon',
      			params:{
       			 name:numData.name,
        		age:numData.age,
      			}
        }),
        this.$rouyer.replace({
            name:'SonSon',
      			params:{
       			name:numData.name,
        		age:numData.age,
      			}
        }),
     		this.$router.back(),//当前路由历史记录前进1
        this.$router.forward(),//当前路由历史记录后退1
        this.$router.go(2)//表示历史往前2步,负数表示后退几步
      }
    }
  }
</script>

6.缓存路由组件

//想要路由不销毁需要给套一个标签
// include 指定不需要销毁的路由组件 参数为组件名
//
//
//

标签:vue,name,Vue,SonSon,组件,router,路由,roter
From: https://www.cnblogs.com/my-hsm/p/17139387.html

相关文章

  • vue-vue项目创建、es6导入导出语法、scoped使用
    1.vue-cil下载和创建1.1下载安装vue-cli: 我们使用npm(并行)下载是是从国外的网站下载,所以速度会比较慢,建议使用cnpm(串行),cnpm要从淘宝镜像下载。 步骤: 1.安装cnp......
  • vue2,nginx,redis,tomcat,Java的关系
    Java作为一种广泛应用的编程语言,在后端开发中扮演着重要的角色。Java后端开发不仅需要掌握Java语言的基本语法和相关技术,还需要熟悉一些其他的技术和工具,如Vue2、Nginx、Re......
  • Vue 非单文件组件(不常用)3步骤(创建、注册、使用)
    Vue中使用组件的三大步骤:1、定义组件(创建)2、注册组件3、使用组件(写组件标签)一、如何定义一个组件?使用Vue.extend(options)创建,其中options和newVue(options)时传入......
  • Vue-cli
    1.什么是 vue-clivue-cli(俗称:vue 脚手架)是vue官方提供的、快速生成vue工程化项目的工具。特点:①开箱即用,②基于 webpack,③功能丰富且易于扩展,④支持创建v......
  • vue项目
    vue-cli创建项目前端做成项目---》使用工具(vue-cli),创建出vue项目,单页面应用,组件化开发把xx.vue,ts,saa,less---》编译---》在浏览器中执行vue-cli创建项目开发,在......
  • Vue3之v-show不能放置于自定义组件
    控制台警告Runtimedirectiveusedoncomponentwithnon-elementrootnode.Thedirectiveswillnotfunctionasintended.原因意思是自定义指令不能放到组件上,而......
  • vue day06
    上节回顾#1组件使用 -局部-全局#2组件间通信 -一旦组件化开发----》组件间通信-父传子:自定义属性-子传父:自定义事件-ref属性: ......
  • vue项目
    目录1vue-cli创建项目2vue项目目录介绍3es6导入导出语法4小练习-登录功能5scoped1vue-cli创建项目#前端做成项目----》使用工具(vue-cli),创建出vue项目,单......
  • Vue - 7 Vue-cli项目
    Vue-7Vue-cli项目目录1.Vue-cli创建项目(1)下载和安装1.用cnpm替换npm2.cnpm安装vue-cil(2)使用vue-cil创建项目1.新建目录2.使用终端vue-cil创建项目3.使用vue提供的vu......
  • vue_day06 vue-cli基本使用了解
    目录今日内容详细一、vue-cli创建项目二、vue项目目录介绍三、es6导入导出语法1.App.vue,main.js,About.vue写了什么2.导入导出语法3.vue项目编写步骤四、小练习-登录功能1.A......