对于大多数单页应用程序而言,管理路由是一项必不可少的功能。随着新版本的Vue Router处于Alpha阶段,我们已经可以开始查看下一个版本的Vue中它是如何工作的。

Vue3中的许多更改都会稍微改变我们访问插件和库的方式,其中包括Vue Router。我们将结合使用Alpha版本的Vue Router和当前的Vue3 Alpha版本进行研究。

本文告诉你如何将Vue Router添加到Vue3项目中,并有一个很好的小例子!

设置

首先,我们将使用由Evan You 发布的Vue3 Webpack预览版。

让我们使用 git clone https://github.com/vuejs/vue-next-webpack-preview.git 克隆仓库。

然后,要将vue-router alpha添加到我们的项目中,我们要修改 package.json 文件。

在我们的依赖关系中,我们想添加以下版本的vue-router

"dependencies": {"vue": "^3.0.0-alpha.10","vue-router": "4.0.0-alpha.4"
}

现在,我们终于可以从命令行运行 npm install 来安装所有依赖项。

我们最终要做的设置是实际创建你的路由文件以及一些映射到它的视图。

src/ 文件夹中,我们将添加三个文件。

  • router/index.js
  • views/Home.vue
  • views/Contact.vue

我们的路由器文件将包含我们的路由器,并且我们的 Home/Contact 视图将只输出一个单词,以便我们了解发生了什么。

建立路由

一切准备就绪,让我们开始使用Vue Router!

简而言之,Vue Router的Vue3版本的主要区别在于我们必须导入新方法才能使代码正常工作。其中最重要的是createRoutercreateWebHistory

在我们的 router/index.js 文件中,让我们导入这两个方法以及前面的两个视图。

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import Contact from '../views/Contact.vue'

接下来,我们要做的是使用createWebHistory方法创建一个routerHistory对象。

import { createRouter, createWebHistory } from 'vue-router'
import Home from '../views/Home.vue'
import Contact from '../views/Contact.vue'const routerHistory = createWebHistory()

在此之前,我们可以只输入 mode: history 来从哈希模式切换到 history 模式,但是现在我们使用 history: createWebHistory() 来实现这一点。

接下来,我们实际上可以使用 createRouter 创建路由器,它接受一个对象,我们希望传递 routerHistory 变量以及两个路由的数组。

const router = createRouter({history: routerHistory,routes: [{path: '/',component: Home},{path: '/contact',component: Contact}]
})

最后,让我们将路由导出。

export default router

如你所见,它仍然与Vue2非常相似。但是,通过所有这些更改,可以更好地支持Typescript和进行优化,因此熟悉新方法是很不错的。

使用vue路由器

现在我们的Vue Router文件已经设置好了,我们可以将其添加到项目中了。以前,我们可以导入它并Vue.use(router),但这在Vue3中不一样。

在 main.js 文件中,你会看到我们正在使用Vue中的 createApp 方法来实际创建我们的项目。在默认项目中,它链接 createAppmount 方法。

const app = createApp(App)app.mount('#app')

然后,在挂载我们的应用程序之前,我们想告诉它使用路由器文件。

import router from './router'const app = createApp(App)app.use(router)app.mount('#app')

最后,在我们的App.vue文件中,让我们实际显示我们的 router-view 并提供一些 router-link,以便我们能够四处导航。

<template><div id='root'><img src='./logo.png' /><div id='nav'><router-link to='/'> Home</router-link><router-link to='/contact'>Contact </router-link></div><router-view /></div>
</template>

所以现在,如果我们单击一下,我们将看到实际上可以在两个页面之间导航!

但是,如果我们尝试直接进入我们的 /contact 路由,那将不起作用!我们遇到某种错误。

幸运的是,这是可以非常快速的用webpack修复。

在我们的 webpack.config.js 文件中,我们希望通过更改配置使devServer能够使用 history api,使它看起来像这样。

devServer: {inline: true,hot: true,stats: 'minimal',contentBase: __dirname,overlay: true,historyApiFallback: true
}

现在,如果我们直接导航到 /contact 路由,那么一切都应该正常运行

总结

我们已成功将vue-router添加到我们的Vue3项目中。其他大多数功能(例如导航守卫,处理滚动条)和这些功能大致相同。

这是本教程最终Github仓库的链接。如果您想在Vue3测试版中安装vue-router,这是一个很好的模板代码。


如果对你有所启发和帮助,可以点个关注、收藏、转发,也可以留言讨论,这是对作者的最大鼓励。

作者简介:Web前端工程师,全栈开发工程师、持续学习者。

关注公众号 《前端外文精选》,私信回复:大礼包,送某网精品视频课程网盘资料,准能为你节省不少钱!

Vue3中的Vue Router初探相关推荐

  1. Vue3+vueRouter+pinia(vue路由使用 pinia使用)

    vite创建vue3项目 安装Vue Router(vue路由) 简单的路由使用 路由传参(参数的时候,可以把参数放到props里面去,方便使用,下面的案例都把参数放到props里面的) 使用quer ...

  2. Vue Router 实现路由控制实战

    本文是我在学习过程中记录学习的点点滴滴,目的是为了学完之后巩固一下顺便也和大家分享一下,日后忘记了也可以方便快速的复习. Vue Router 实现路由控制实战 前言 一.什么是单页面应用及实现前端路 ...

  3. Vue | Vue Router 路由的使用

    文章目录 一.路由的基本使用 1.创建 Vue 项目并引入 vue-router 2.编写 Components 组件 3.编写路由文件 4.在主文件 Main.js 中引入路由 5.添加 route ...

  4. Vue 学习(十、 Vue Router - 路由插件 和 Vue 的插件原理)

    文章目录 一.Vue Router - 路由插件 1. 安装 Vue Router 2. Vue Router 路由的基本使用 3. 设置 router-link 4. 编程式路由 5. 路由嵌套 6 ...

  5. 如何在Vue3中使用router

    如何在Vue3中使用router //在vue的js或ts文件中引入vue-router的方法 import {createWebHashHistory,createRouter} from 'vue ...

  6. Vue Router:vue中实现前端路由

    Vue Router 官方文档 文章目录 一.路由简介 路由分类 路由安装 二.路由基本使用 安装路由器并设置路由规则 实现路由切换 指定组件的呈现位置 this中的 $router 和 $route ...

  7. 如何优雅的在 vue 中使用 非响应式对象_一篇文章上手Vue3中新增的API

    1. 初始化项目 // ① npm i -g @vue/cli // ② vue create my-project // ③ npm install @vue/composition-api -S/ ...

  8. 关于Vue中,$this.router.push到当前页面,只是传入参数不同,页面不刷新的问题解决

    关于Vue中,$this.router.push到当前页面,只是传入参数不同,页面不刷新的问题解决 参考文章: (1)关于Vue中,$this.router.push到当前页面,只是传入参数不同,页面 ...

  9. Vue中路由管理器Vue Router使用介绍(三)

    2019独角兽企业重金招聘Python工程师标准>>> 一.路由定义添加动态参数定义 1.路由定义项,使用:xx 方式 定义动态参数 {path:'/user/:id/:name', ...

最新文章

  1. Chrome开发者工具关于网络请求的一个隐藏技能
  2. Centos 6.8 搭建owncloud 私有云盘
  3. WEB前端:06_accordion手风琴效果
  4. KVM中I/O虚拟化介绍(五)
  5. 2019年华南理工大学程序设计竞赛(春季赛)
  6. Android特效专辑(十二)——仿支付宝咻一咻功能实现波纹扩散特效,精细小巧的View...
  7. python怎么填充画布_如何在kivy中用图像填充画布?
  8. OAuth 2.0——授权服务开发笔记(一)
  9. 挑选出tensor中等于0的索引_Pytorch中的5个非常有用的张量操作
  10. 一个PHP多个界面跳转,php中的多种界面跳转方式
  11. 错误处理之异常与返回码
  12. 拼装机器人感想_机器人学习心得总结
  13. 树莓派2B使用360随身WiFi2代连接WiFi
  14. 最好的Linux文件管理器,适用于 Linux 用户的 10 款优秀且免费的文件管理器
  15. todd的hadoop world的ppt笔记
  16. 宁畅g40系列服务器发布,酷冷至尊MWE Gold V2 1050 让你的神机干劲十足
  17. 小米公司在互联网的地位怎么样
  18. 扩容U盘(缩水U盘)量产恢复方法——以CBM2099E主控为例
  19. 博途plc连接电脑_S7-1200PLC以太网连接电脑
  20. 被360软件管家黑的WPS

热门文章

  1. 5、孟子·万章上 孟子·万章下
  2. unity导入3DMAX模型失真无法修改渲染方法解决方案
  3. 好好学习-三种网络攻击模型
  4. android 物理键盘 字符,Android物理键盘事件解析
  5. U盘在Ubuntu下提示只读文件系统
  6. [求职笔试]20210703笔试
  7. DC综合的引导语句——synopsys translate_off/synopsys translate_on/parallel_case/full_case
  8. 蒲公英服务器搭建小程序,蒲公英 - 文档中心 - 应用上传
  9. 这个开挂一般的工具,承包你所有的PPT
  10. python面向对象【头歌】