从 Vue2向Vue3的迁移

本文介绍了Vue Router从v3到v4(Vue3)迁移时的主要变化,包括new Router变为createRouter,history配置更新,base配置位置变动,以及在Vue3中直接使用imported $router的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Vue Router API 从 v3(Vue2)到 v4(Vue3)的重写过程中,大部分的 Vue Router API 都没有变化,但是在迁移程序时,可能会遇到一些破坏性的变化。

1、new Router 变成 createRouter

Vue Router 不再是一个类,而是一组函数。现在不用再写new Router(),而是要调用createRouter():

Vue2:

import Router from 'vue-router'

var router = new Router({
    ...
})

Vue3:

import { createRouter } from 'vue-router'

const router = createRouter({
   ...
})

2、新的 history 配置取代 mode

mode:'history'配置已经被一个更灵活的history配置所取代。根据你使用的模式,必须用适当的函数替换它:

  • "history" :  createWebHistory()
  • "hash" :  createWebHashHistory()
  • "abstract" :  createMemoryHistory()

Vue2:

import Router from 'vue-router'

var router = new Router({
    mode: 'history',
    routes: []
})

Vue3:

import { createRouter, createWebHistory } from 'vue-router'
// 还有 createWebHashHistory 和 createMemoryHistory

createRouter({
  history: createWebHistory(),
  routes: []
})

3、移动了base配置

在Vue3中,base配置被作为createWebHistory(其他 history 也一样)的第一个参数传递:

Vue2:

import Router from 'vue-router'

var router = new Router({
    mode: 'history',
    base: process.env.BASE_URL,
    routes: []
})

Vue3:

import { createRouter, createWebHistory } from 'vue-router'
createRouter({
  history: createWebHistory(process.env.BASE_URL),
  routes: []
})

4、$router属性

在Vue3中调用$router.push()等属性时,不再需要this指针;

通过调用import router from "@/router"即可直接使用。

Vue2:

methods: {
	show: function (value) {
		this.$router.push({name: value});
	}
}

Vue3:

import router from "@/router";

methods:{
    show:function (value){
        router.push({name:value});
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值