VueRouter的使用

路由的封装抽离:在src目录下新建router文件夹,router文件下新建index.js文件,在里面配置路由。好处:拆分模块,利于维护。

一、5个基本步骤

1.下载:下载VueRouter模块到当前工程。命令:npm i vue-router@3

2.引入:

import Vue from 'vue'

import VueRouter from 'vue-router'

3.安装注册:Vue.use(VueRouter)

4.创建路由对象:const router = new VueRouter( )

5.注入:将路由对象注入到new Vue实例中,建立关联。

new Vue({

render: h => h(App),

router

}).$mount('#app')

二、2个核心步骤

1.创建需要的组件(views目录),配置路由规则(路径和组件的匹配关系)。

2.配置导航,配置路由出口 router-view (路径对应的组件显示的位置)

router 下的index.js如下

复制代码
//  @/views 绝对路径 : 基于 @ 指代 src 目录,从 src 目录出发找组件
import Find from '@/views/Find'
import My from '@/views/My'
import Friend from '@/views/Friend'

import Vue from 'vue'
import VueRouter from 'vue-router'

//VueRouter插件初始化
Vue.use(VueRouter)

//创建路由对象
const router = new VueRouter({
  //路由规则们,数组包对象。一条路由规则{path:路径,component:组件}
  routes: [
    { path: '/find', component: Find },
    { path: '/my', component: My },
    { path: '/friend', component: Friend }
  ],
  //自定义类名
  linkActiveClass: 'active',   //配置模糊匹配的类名
  linkExactActiveClass: 'exact-active'   //配置精确匹配的类名
})

export default router

App.vue如下(简单介绍 router-link )

复制代码
<template>
  <div>
    <div class="footer_wrap">
      <!-- 
      1.router-link是什么?
        vue-router提供的全局组件,用于替换a标签
      2.router-link怎么用?
       <router-link to="/路径值"></router-link>
        必须传入to属性,指定路由路径值
      3.router-link好处?
        能跳转,能高亮(自带激活时的类名)            
       -->
      <router-link to="/find">发现音乐</router-link>
      <router-link to="/my">我的音乐</router-link>
      <router-link to="/friend">朋友</router-link>
    </div>
    <div class="top">
      <!-- 路由出口(所匹配的组件展示的位置) -->
      <router-view></router-view>
    </div>
  </div>
</template>

<script>
export default {};
</script>

<style>
/* router-link 会自动给当前导航添加两个类名 区别 */
/*  1. router-link-active 模糊匹配(用的多) 
 to='/find => 地址栏/find  /find/one  /find/two */

/*  2. router-link-exact-active  精确匹配 
  to='/find => 地址栏/find */
.footer_wrap a.active {
  background-color: red;
}

body {
  margin: 0;
  padding: 0;
}
.footer_wrap {
  position: relative;
  left: 0;
  top: 0;
  display: flex;
  width: 100%;
  text-align: center;
  background-color: #333;
  color: #ccc;
}
.footer_wrap a {
  flex: 1;
  text-decoration: none;
  padding: 20px 0;
  line-height: 20px;
  background-color: #333;
  color: #ccc;
  border: 1px solid black;
}
.footer_wrap a:hover {
  background-color: #555;
}

</style>
相关推荐
古一|4 分钟前
Vue3中ref与reactive实战指南:使用场景与代码示例
开发语言·javascript·ecmascript
peachSoda75 分钟前
封装一个不同跳转方式的通用方法(跳转外部链接,跳转其他小程序,跳转半屏小程序)
前端·javascript·微信小程序·小程序
@PHARAOH18 分钟前
HOW - 浏览器兼容(含 Safari)
前端·safari
undefined在掘金3904128 分钟前
flutter 仿商场_首页
前端
少卿28 分钟前
react-native图标替换
前端·react native
熊猫钓鱼>_>34 分钟前
TypeScript前端架构与开发技巧深度解析:从工程化到性能优化的完整实践
前端·javascript·typescript
敲敲敲敲暴你脑袋36 分钟前
Canvas绘制自定义流动路径
vue.js·typescript·canvas
JYeontu1 小时前
肉眼难以分辨 UI 是否对齐,写个插件来辅助
前端·javascript
fox_1 小时前
别再踩坑!JavaScript的this关键字,一次性讲透其“变脸”真相
前端·javascript
盛夏绽放1 小时前
uni-app Vue 项目的规范目录结构全解
前端·vue.js·uni-app