Vue Router应用方法详解

 更新时间:2022年09月20日 11:23:01   作者:❀༊烟花易冷ღ࿐❀  
在看这篇文章的几点要求:需要你先知道Vue-Router是个什么东西,用来解决什么问题,以及它的基本使用。如果你还不懂的话,建议上官网了解下Vue-Router的基本使用后再回来看这篇文章

服务端路由

服务端路由时指的是服务器根据用户访问的 URL 路径返回不同的响应结果。

在传统的服务端渲染的 web 应用中点击一个链接时,浏览器会从服务端获得全新的 HTML页面,然后重新加载整个页面。

然而,在单页面应用中,客户端的 JavaScript 可以拦截页面的跳转请求,动态获取新的数据,无需重新加载的情况下更新当前页面。

这样通常可以带来更顺滑的用户体验,尤其是在更偏向“应用”的场景下,因为这类场景下用户通常会在很长的一段时间中做出多次交互。

在这类单页应用中,“路由”是在客户端执行的。一个客户端路由器的职责就是利用诸如 History API 或是 hashchange 事件这样的浏览器 API 来管理应用当前应该渲染的视图。

路由的应用场景

单页面应用(SPA应用):

  1. 顾名思义导航栏不变,内容栏改变的应用。
  2. 内容栏根据导航栏的选择变化的同时,页面不会跳转,也就是说不会产生新的请求。
  3. js拦截页面的跳转请求,动态的获取新的数据,路径也会随之变化。
  4. 数据需要通过ajax的请求获取。

路由

  1. 路由就是多个key-value的对应关系。
  2. 每一个路由都需要路由器的支持。

监听浏览器 hashchange 事件实现路由

如果你只需要一个简单的页面路由,而不想为此引入一整个路由库,你可以通过动态组件的方式,监听浏览器 hashchange 事件或使用 History API 来更新当前组件。

<script>
import About from "./components/About.vue";
import Home from "./components/Home.vue";
import NotFound from "./components/Not Found.vue";
const routes = {
  //路由默认跳转到Home组件
  '/': Home,
  '/about': About
}
export default {
  data() {
    return {
      currentPath: window.location.hash
    }
  },
  computed: {
    //计算属性的方法,响应式的,缓存
    currentView() {
      //过滤#,匹配路由
      return routes[this.currentPath.slice(1) || '/' ] || NotFound
    }
  },
  mounted() {
    window.addEventListener('hashchange', () => {
      //只要window变化了就,把当前的路径给App组件下的属性this.currentPath
      this.currentPath = window.location.hash
    })
  }
}
</script>
<template>
  <a href="#/" rel="external nofollow" >Home</a> |
  <a href="#/about" rel="external nofollow" >About</a> |
  <a href="#/non-existent-path" rel="external nofollow" >Broken Link</a>
  <br>
  <component :is="currentView" />
</template>

使用Vue Router+Vue2实现路由

用 Vue + Vue Router 创建单页应用非常简单:通过 Vue.js,我们已经用组件组成了我们的应用。当加入 Vue Router 时,我们需要做的就是将我们的组件映射到路由上,让 Vue Router 知道在哪里渲染它们。

1.安装路由

npm i vue-router@3

注意:

  1. vue3对应的vue-router版本是4
  2. vue2对应的vue-router版本是3
  3. 我这里是vue2

2.导入VueRouter插件(main.js)

import Vue from 'vue'
import App from './App.vue'
import VueRouter from "vue-router"
import './assets/main.css'
//关闭vue的生产提示
Vue.config.productionTip = false
//使用路由器插件
Vue.use(VueRouter)
new Vue({
  render: (h) => h(App),
}).$mount('#app')

3.编写创建路由器router(并暴露)的js文件(router/index.js)

import VueRouter from "vue-router";
import Home from "../components/Home";
import About from "../components/About";
import NotFound from "../components/Not Found";
//创建路由器并暴露
export default new VueRouter({
    //多个路由
    routes:[
        {
            path:'/about',
            component:About
        },
        {
            path:'/Home',
            component:Home
        }
    ]
})

4.引入router(main.js)

import router from "./router";
new Vue({
  render: (h) => h(App),
  router:router
}).$mount('#app')

5. 测试

<template>
<div>
  <h1>Router Demo</h1>
  <router-link to="/home">Home</router-link>||
  <router-link to="/about">About</router-link>
  <router-view></router-view>
</div>
</template>

Vue3 + Vue-router

到此这篇关于Vue Router应用方法详解的文章就介绍到这了,更多相关Vue Router内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • vue中formdata传值给后台时参数为空的问题

    vue中formdata传值给后台时参数为空的问题

    这篇文章主要介绍了vue中formdata传值给后台时参数为空的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-06-06
  • Vue3中pinia的使用与持久化处理详解

    Vue3中pinia的使用与持久化处理详解

    Pinia 是一个基于 Vue 3 的状态管理库,可以更好地支持 TypeScript 和更灵活的状态管理方式,本文主要介绍了pinia的使用与持久化处理,需要的可以参考一下
    2023-07-07
  • vue2.0开发入门笔记之.vue文件的生成和使用

    vue2.0开发入门笔记之.vue文件的生成和使用

    本篇文章主要介绍了vue2.0开发入门笔记之.vue文件的生成和使用 ,非常具有实用价值,需要的朋友可以参考下
    2017-09-09
  • vue3 template转为render函数过程详解

    vue3 template转为render函数过程详解

    在 Vue 中,template 模板是我们编写组件的主要方式之一,而 Vue 内部会将这些模板转换为 render 函数,render 函数是用于创建虚拟 DOM 的函数,通过它,Vue 能够高效地追踪 DOM 的变化并进行更新,下面我会通俗易懂地详细解释 Vue 如何将 template 转换为 render 函数
    2024-10-10
  • vue中v-for加载本地静态图片方法

    vue中v-for加载本地静态图片方法

    下面小编就为大家分享一篇vue中v-for加载本地静态图片方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Vue与compressor.js实现高效文件压缩的方法

    Vue与compressor.js实现高效文件压缩的方法

    本文将介绍基于 Vue 框架和 compressor.js 的上传时文件压缩实现方法,通过在上传过程中对文件进行压缩,减小文件大小,提升上传速度,为用户创造更快捷、高效的上传体验,感兴趣的朋友跟随小编一起看看吧
    2024-03-03
  • Vue.js中的全局错误处理函数errorHandler用法

    Vue.js中的全局错误处理函数errorHandler用法

    这篇文章主要介绍了Vue.js中的全局错误处理函数errorHandler用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • 在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟

    在 Vue-CLI 中引入 simple-mock实现简易的 API Mock 接口数据模拟

    本文以 Vue-CLI 为例介绍引入 simple-mock 实现前端开发数据模拟的步骤。感兴趣的朋友跟随小编一起看看吧
    2018-11-11
  • Vue引入sign-canvas实现签名画板效果

    Vue引入sign-canvas实现签名画板效果

    这篇文章主要介绍了Vue引入sign-canvas实现签名画板,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • Vue中事件总线(eventBus)的深入详解及使用

    Vue中事件总线(eventBus)的深入详解及使用

    在vue项目中父子组件间的通讯很方便,但兄弟组件或多层嵌套组件间的通讯,就会比较麻烦,这时使用eventBus通讯,就可以很便捷的解决这个问题,这篇文章主要给大家介绍了关于Vue中事件总线(eventBus)使用的相关资料,需要的朋友可以参考下
    2022-03-03

最新评论