vue2 和 vue3 配置路由有什么区别

news2024/11/15 12:59:37
  • vue2 和 vue3 配置路由有什么区别
    • 初始化路由器实例
    • 注入到应用中
    • 动态路由参数和捕获所有路由
    • 编程式导航 API
    • 异步加载组件
  • vue2 如何 使用路由
    • 第一步:安装 vue-router
    • 第二步:创建路由组件
    • 第三步:配置路由
    • 第四步:在主应用入口注册路由
    • 第五步:在应用中使用 组件导航
  • vue3 如何 使用路由
    • 第一步:安装 vue-router
    • 第二步:创建路由组件
    • 第三步:配置路由
    • 第四步:在主应用入口注册路由
    • 第五步:在应用中使用 组件导航
  • vue2 和 vue3 配置路由有什么区别

vue2 和 vue3 配置路由有什么区别

Vue 2 和 Vue 3 在配置路由方面存在一些区别,主要体现在以下几个方面:

初始化路由器实例

  • Vue 2 中,通过 new Router() 创建路由实例,并传入配置对象。

    import Vue from 'vue'
    import Router from 'vue-router'
    import Home from './views/Home.vue'
    
    Vue.use(Router)
    
    const router = new Router({
      routes: [
        { path: '/', component: Home },
        // ...其他路由配置
      ]
    })
    
  • Vue 3 中,使用 createRouter 函数创建路由实例,并且需要显式地指定 history 类型,例如 createWebHistorycreateWebHashHistory

    import { createApp } from 'vue'
    import { createRouter, createWebHistory } from 'vue-router'
    import Home from './views/Home.vue'
    
    const router = createRouter({
      history: createWebHistory(),
      routes: [
        { path: '/', component: Home },
        // ...其他路由配置
      ]
    })
    

注入到应用中

  • Vue 2 中,在 new Vue() 的选项对象中直接挂载路由实例。

    new Vue({
      router,
      render: h => h(App),
    }).$mount('#app')
    
  • Vue 3 中,使用 createApp 创建的应用实例上有一个 .use() 方法来注册插件,包括路由。

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

动态路由参数和捕获所有路由

  • Vue Router v4(与Vue 3配合)对通配符路由(catch-all routes)的处理方式有所变化。在 Vue 2 中,可以简单地定义一个星号 (*) 路由作为 catch-all,但在 Vue 3 中必须使用带有自定义正则表达式的参数来实现。

Vue 2:
javascript { path: '*', redirect: '/not-found' }

Vue 3 (with Vue Router v4):
javascript { path: '/:pathMatch(.*)*', name: 'not-found', component: NotFoundComponent }

编程式导航 API

  • Vue Router 在 Vue 2 和 Vue 3 中都提供了类似的编程式导航方法如 router.push(), router.replace(), router.go() 等,但它们在 Vue 3 中是作为 router 实例上的方法暴露出来的,而不再依赖于全局的 this.$router

异步加载组件

  • Vue 2 使用 import() 动态导入语法与 component: () => import('./MyComponent.vue') 结合来异步加载路由组件。
  • Vue 3 继续支持这种方式,但在 Vue Router v4 中提供了更灵活的 loadComponent 配置项以支持异步加载组件。

Vue 3 的路由配置逻辑和 Vue 2 相似,但在实际使用时有一些API调用和细节上的差异,以及对Composition API更好的兼容性。

同时,Vue Router v4 对 Vue 3 的支持也带来了新的特性和最佳实践。

vue2 如何 使用路由

在Vue 2中使用路由,首先需要安装vue-router库,并进行基本的配置以设置不同的页面组件与URL路径之间的映射。以下是一个简化的步骤示例:

第一步:安装 vue-router

npm install vue-router@^3 # 确保安装的是Vue 2版本的vue-router
# 或者
yarn add vue-router@^3

第二步:创建路由组件

假设你有两个页面组件 Home.vueAbout.vue

// Home.vue
<template>
  <div>Welcome to the Home Page</div>
</template>

// About.vue
<template>
  <div>About this Application</div>
</template>

第三步:配置路由

在项目中创建一个文件(如src/router/index.js)来配置路由:

import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import About from '@/components/About'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      component: Home,
      name: 'Home',
    },
    {
      path: '/about',
      component: About,
      name: 'About',
    },
  ],
})

第四步:在主应用入口注册路由

修改src/main.js,确保将创建的路由实例注入到Vue实例中:

import Vue from 'vue'
import App from './App.vue'
import router from './router' // 导入上面创建的路由配置

new Vue({
  router, // 注册路由
  render: h => h(App),
}).$mount('#app')

第五步:在应用中使用 <router-link> 组件导航

在任意模板中,比如 App.vue 中,可以使用 <router-link> 来创建链接导航:

<template>
  <div id="app">
    <nav>
      <router-link to="/">Home</router-link> |
      <router-link to="/about">About</router-link>
    </nav>
    <router-view></router-view> <!-- 这里将会显示当前激活的路由组件 -->
  </div>
</template>

现在当你运行应用程序并点击“Home”或“About”,Vue Router 将会根据定义的路由规则自动切换显示对应的组件内容。

更多详细内容,请微信搜索“前端爱好者戳我 查看

vue3 如何 使用路由

在Vue 3中使用路由,你需要安装vue-router@4(与Vue 3兼容的版本),然后进行基本配置以设置不同的页面组件与URL路径之间的映射。以下是一个简化的步骤示例:

第一步:安装 vue-router

npm install vue-router@^4 # 确保安装的是Vue 3版本的vue-router
# 或者
yarn add vue-router@^4

第二步:创建路由组件

假设你有两个页面组件 Home.vueAbout.vue

// Home.vue
<template>
  <div>Welcome to the Home Page</div>
</template>

// About.vue
<template>
  <div>About this Application</div>
</template>

第三步:配置路由

在项目中创建一个文件(如src/router/index.js)来配置路由:

import { createRouter, createWebHistory } from 'vue-router'
import Home from '@/components/Home.vue'
import About from '@/components/About.vue'

const routes = [
  {
    path: '/',
    component: Home,
    name: 'Home',
  },
  {
    path: '/about',
    component: About,
    name: 'About',
  },
]

export default createRouter({
  history: createWebHistory(),
  routes,
})

第四步:在主应用入口注册路由

修改src/main.js,确保将创建的路由实例注入到根组件的创建函数中:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router' // 导入上面创建的路由配置

const app = createApp(App)

app.use(router)

app.mount('#app')

第五步:在应用中使用 <router-link> 组件导航

在任意模板中,比如 App.vue 中,可以使用 <router-link> 来创建链接导航:

<template>
  <div id="app">
    <nav>
      <router-link to="/">Home</router-link> |
      <router-link to="/about">About</router-link>
    </nav>
    <router-view></router-view> <!-- 这里将会显示当前激活的路由组件 -->
  </div>
</template>

现在当你运行应用程序并点击“Home”或“About”,Vue Router 将会根据定义的路由规则自动切换显示对应的组件内容。

此外,在Vue 3的setup语法糖或者Composition API中访问路由对象和进行编程式导航:

import { useRouter } from 'vue-router'

export default {
  setup() {
    const router = useRouter()

    function goToAbout() {
      router.push('/about') // 跳转至关于页面
    }

    return {
      goToAbout,
    }
  },
}

vue2 和 vue3 配置路由有什么区别

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1543413.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Java 基础知识- 创建线程的几种方式

大家好我是苏麟 , 今天聊聊创建线程的几种方式 . 创建线程的几种方式 1. 继承Thread类实现多线程 /*** className: ThreadTest* author: SL 苏麟**/ public class ThreadTest extends Thread{public static void main(String[] args) {ThreadTest threadTest new ThreadTes…

【Flutter 面试题】Flutter中的状态管理方案有哪些?请解释其中的一个

【Flutter 面试题】Flutter中的状态管理方案有哪些&#xff1f;请解释其中的一个 文章目录 写在前面口述回答补充说明准备工作实现待办事项模型实现待办事项列表模型构建 UI运行结果详细说明 写在前面 &#x1f64b; 关于我 &#xff0c;小雨青年 &#x1f449; CSDN博客专家&…

政安晨:【深度学习实践】【使用 TensorFlow 和 Keras 为结构化数据构建和训练神经网络】(三)—— 随机梯度下降

政安晨的个人主页&#xff1a;政安晨 欢迎 &#x1f44d;点赞✍评论⭐收藏 收录专栏: TensorFlow与Keras实战演绎 希望政安晨的博客能够对您有所裨益&#xff0c;如有不足之处&#xff0c;欢迎在评论区提出指正&#xff01; 这篇文章中&#xff0c;咱们将使用Keras和TensorFlow…

RAFT: Adapting Language Model to Domain Specific RAG

预备知识 RAG介绍一文搞懂大模型RAG应用&#xff08;附实践案例&#xff09; - 知乎 (zhihu.com) RAG的核心理解为“检索生成” 检索&#xff1a;主要是利用向量数据库的高效存储和检索能力&#xff0c;召回目标知识&#xff1b; 生成&#xff1a;利用大模型和Prompt工程&a…

今天聊聊Docker

在数字化时代&#xff0c;软件应用的开发和部署变得越来越复杂。环境配置、依赖管理、版本控制等问题给开发者带来了不小的挑战。而Docker作为一种容器化技术&#xff0c;正以其独特的优势成为解决这些问题的利器。本文将介绍Docker的基本概念、优势以及应用场景&#xff0c;帮…

前缀和(三)

题目&#xff1a;激光炸弹 1 链接 P2280 [HNOI2003] 激光炸弹 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 2.大体思路 先开辟一个全局变量的 s 二维数组&#xff0c;这个二维数组开成 s [ 5010 ] [ 5010 ] &#xff0c;这个是为了&#xff0c;能够将它所给的所有有价值的…

由vue2版本升级vue3版本遇到的问题

一、vuedraggable 由vue2版本升级vue3版本后&#xff0c;可能会遇到以下几种bug&#xff1a; 1、vue3vuedraggable报错TypeError: Cannot read properties of undefined (reading ‘updated’)&#xff1a;这个一般是因为插件使用语法有问题&#xff0c;vue3版本的插件使用时&…

Git基础(24):分支回退

文章目录 前言放弃已修改的内容分支回退到指定commit 前言 将分支回退到之前的某个版本 开发中&#xff0c;可能开发某个功能不需要了&#xff0c;或者想要回退到之前历史的某个commit&#xff0c; 放弃后来修改的内容。 放弃已修改的内容 如果未提交&#xff0c;直接使用 …

一个优秀的开源ChatGpt外壳项目(lobe-chat)

lobe-chat 简介&#xff1a; 开源、现代化设计的 ChatGPT/LLMs 聊天应用与开发框架支持语音合成、多模态、可扩展的插件系统&#xff0c;一键免费拥有你自己的 ChatGPT/Gemini/Ollama 应用。 下载lobe-chat lobe-chat项目开源地址&#xff1a;GitHub - lobehub/lobe-chat: &am…

[Linux]文件缓冲区

文件fd 输出重定向除了用dup2()改变数组下标外&#xff0c;还可以用命令来完成 所有的命令执行&#xff0c;都必须有操作系统将其运行起来变成进程&#xff0c;然后根据>>, <<来判断是输入重定向&#xff0c;还是输出重定向。 缓冲区 之所以有缓冲区&#xff0…

Jenkins+Ant+Jmeter接口自动化集成测试详解

&#x1f345; 视频学习&#xff1a;文末有免费的配套视频可观看 &#x1f345; 关注公众号【互联网杂货铺】&#xff0c;回复 1 &#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 一、Jenkins安装配置 1、安装配置JDK1.6环境变量&#xff1b; …

mysql事务及存储引擎

目录 什么是事务 事务的ACIP特性 事务之间的影响 mysql隔离级别 事务隔离级别的作用范围 事务控制语句 mysql存储引擎 什么是事务 事务是一种机制、一个操作序列&#xff0c;包含了一组数据库操作命令&#xff0c;并且把所有的命令作为一个整体一起向系统提交或撤销操作…

STM32—控制蜂鸣器(定时器)

目录 1 、 电路构成及原理图 2 、编写实现代码 main.c tim_irq.c 3、代码讲解 4、烧录到开发板调试、验证代码 5、检验效果 此笔记基于朗峰 STM32F103 系列全集成开发板的记录。 1 、 电路构成及原理图 定时器中断是利用定时器的计数功能&#xff08;向上计数或向下计…

Web前端—CSS属性计算过程

属性计算过程 CSS 属性计算过程1. 确定声明值2. 层叠冲突比较源的重要性比较优先级比较次序 3. 使用继承4. 使用默认值 CSS 属性计算过程 我们所书写的任何一个 HTML 元素&#xff0c;实际上都有完整的一整套 CSS 样式&#xff08;该元素上面会有 CSS 所有的属性。&#xff0…

Windows 7 一键恢复 - 联想拯救系统

Windows 7 一键恢复 - 联想拯救系统 1. 联想拯救系统1.1. OEM 分区1.2. 一键恢复 References 1. 联想拯救系统 1.1. OEM 分区 计算机 -> 管理 -> 存储 -> 磁盘管理 1.2. 一键恢复 重新启动电脑 F11 -> 从初始备份恢复 References [1] Yongqiang Cheng, https…

实在数字员工,助力菜鸟智慧物流高效腾飞,领航行业新高度

秉承人人都有一个智能助理的发展愿景&#xff0c;自2023年首个数字员工落地以来&#xff0c;菜鸟数字员工累计运行时长已达10万小时。 在智能物流科技不断飞速迭代的今天&#xff0c;物流行业作为社会经济运行的重要支柱和电子商务生态链的关键环节&#xff0c;面临着前所未…

Python灰帽子网络安全实践

教程介绍 旨在降低网络防范黑客的入门门槛&#xff0c;适合所有中小企业和传统企业。罗列常见的攻击手段和防范方法&#xff0c;让网站管理人员都具备基本的保护能力。Python 编程的简单实现&#xff0c;让网络运维变得更简单。各种黑客工具的理论和原理解剖&#xff0c;让人知…

PLC常用通信协议应用

PLC通信协议 ModbusModbus协议介绍Modbus协议的应用Modbus通信模式 Modbus RTU通讯Modbus RTU报文映射寄存器常见功能码数据类型Modbus CRC校验计算Modbus RTU举例&#xff08;读位&#xff09;Modbus RTU举例&#xff08;读字&#xff09; Modbus TCP协议应用TCP数据帧Modbus …

Spring IOC 容器的加载过程(bean 的创建过程)

Spring IOC 容器的加载过程&#xff08;bean 的创建过程&#xff09; 配置Bean 通过xml或者是Component Bean 等进行配置 解析Bean,得到BeanDefinition定义对象 通过 BeanDefintionReader 将 bean 进行解析&#xff0c;准备要创建的bean对象的定义对象BeanDefinition,存放到Be…

Elasticsearch 索引模板、生命周期策略、节点角色

简介 索引模板可以帮助简化创建和二次配置索引的过程&#xff0c;让我们更高效地管理索引的配置和映射。 索引生命周期策略是一项有意义的功能。它通常用于管理索引和分片的热&#xff08;hot&#xff09;、温&#xff08;warm&#xff09;和冷&#xff08;cold&#xff09;数…