Vue3全局API转移的过程详解

 更新时间:2025年09月30日 10:06:41   作者:编程随想_Code  
在Vue2到Vue3的升级过程中,除了响应式系统、组件写法等发生了变化,全局 API 的转移也是一个非常重要的点,很多初学者在迁移代码时会遇到报错,就是因为Vue3不再像Vue2那样把所有API挂在Vue构造函数上了,本文就来详细讲解一下Vue的全局API转移,需要的朋友可以参考下

在 Vue2 到 Vue3 的升级过程中,除了响应式系统、组件写法等发生了变化,全局 API 的转移也是一个非常重要的点。很多初学者在迁移代码时会遇到报错,就是因为 Vue3 不再像 Vue2 那样把所有 API 挂在 Vue 构造函数上了。

本文就来详细讲解一下 Vue 的全局 API 转移

一、什么是全局 API?

在 Vue2 中,我们经常会写:

import Vue from 'vue'

// 全局配置
Vue.config.productionTip = false

// 全局注册组件
Vue.component('MyComponent', {...})

// 全局注册指令
Vue.directive('focus', {...})

// 全局使用插件
Vue.use(MyPlugin)

// 创建实例
new Vue({
  render: h => h(App),
}).$mount('#app')

可以看到,所有的 API(configcomponentdirectiveuse 等)都挂在 Vue 构造函数上。

二、Vue3 为什么要转移?

在 Vue3 中,框架的设计理念更加 模块化可树摇(Tree-shaking)
如果还把所有 API 都集中在 Vue 上,会导致以下问题:

  1. 包体积大:没用到的 API 也会被打包。
  2. 类型推导差:不利于 TS 类型支持。
  3. 逻辑不清晰:应用级别的配置与组件实例混在一起。

因此,Vue3 把全局 API 拆分成了更清晰的模块。

三、Vue3 的全局 API 转移

在 Vue3 中,所有的应用级 API 都转移到了由 createApp 创建的 应用实例(app 实例) 上。

示例:

import { createApp } from 'vue'
import App from './App.vue'

const app = createApp(App)

// 全局配置
app.config.globalProperties.$http = () => {}

// 全局注册组件
app.component('MyComponent', {...})

// 全局注册指令
app.directive('focus', {...})

// 全局使用插件
app.use(MyPlugin)

// 挂载应用
app.mount('#app')

对比 Vue2,你会发现:
 Vue.xxx 变成了 app.xxx

四、常见 API 的迁移对照表

Vue2 写法Vue3 写法
Vue.configapp.config
Vue.componentapp.component
Vue.directiveapp.directive
Vue.mixinapp.mixin
Vue.useapp.use
Vue.prototypeapp.config.globalProperties

这样设计的好处是:每个应用实例都可以有自己独立的配置,不会互相影响,非常适合 多应用场景

五、特殊说明

Vue.extend 被移除
Vue3 推荐使用 defineComponent 来定义组件。

import { defineComponent } from 'vue'

export default defineComponent({
  props: { msg: String },
  setup(props) {
    return () => <div>{ props.msg }</div>
  }
})

Vue.setVue.delete 移除
在 Vue3 的 Proxy 响应式系统下,已经不需要 set/delete 这种强制 API 了。

全局过滤器 Vue.filter 被移除
Vue3 建议用 方法计算属性 来替代。

六、总结

  • Vue2:全局 API 都挂在 Vue 构造函数上。
  • Vue3:全局 API 都转移到了 应用实例 app 上。
  • 迁移规则:Vue.xxx → app.xxx
  • 移除了一些过时 API(Vue.extendVue.setVue.filter 等)。

这就是所谓的 Vue 全局 API 转移,如果面试官问到,可以从 原因、变化、示例、迁移方式 四个维度回答。

一句话精简版回答(面试常用):
在 Vue2 中,全局 API 挂在 Vue 上;在 Vue3 中,这些 API 都迁移到由 createApp 创建的应用实例上,比如 Vue.useapp.useVue.componentapp.component,这样做是为了支持多应用和更好的 Tree-shaking。

以上就是Vue3全局API转移的过程详解的详细内容,更多关于Vue3全局API转移的资料请关注脚本之家其它相关文章!

相关文章

  • vue3清空let arr=reactive([])的方式

    vue3清空let arr=reactive([])的方式

    这篇文章主要介绍了vue3清空let arr=reactive([])的方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-06-06
  • vue嵌入第三方页面几种常见方法

    vue嵌入第三方页面几种常见方法

    在Vue中嵌入第三方页面可以采用多种方法,例如使用<iframe>、Vue插件、动态加载第三方脚本或WebComponents,不同方法适用于不同类型的内容和项目需求,如<iframe>适用于整个网页,而动态脚本和WebComponents适合特定功能,选择合适的方法可以有效整合外部资源
    2024-09-09
  • vue单选按钮,选中如何改变其当前按钮颜色

    vue单选按钮,选中如何改变其当前按钮颜色

    这篇文章主要介绍了vue单选按钮,选中如何改变其当前按钮颜色。具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • vue中style设置scoped后部分样式不生效的解决

    vue中style设置scoped后部分样式不生效的解决

    这篇文章主要介绍了vue中style设置scoped后部分样式不生效的解决,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-09-09
  • vue调试工具没有Pinia模块的简单解决办法

    vue调试工具没有Pinia模块的简单解决办法

    Pinia是Vue的存储库,它允许您跨组件/页面共享状态,这篇文章主要给大家介绍了关于vue调试工具没有Pinia模块的简单解决办法,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • vue+Element-ui实现分页效果

    vue+Element-ui实现分页效果

    这篇文章主要为大家详细介绍了vue+Element-ui实现分页效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-11-11
  • 简单聊聊Vue中的计算属性和属性侦听

    简单聊聊Vue中的计算属性和属性侦听

    计算属性用于处理复杂的业务逻辑,vue提供了检测数据变化的一个属性watch可以通过newVal获取变化之后的值,这篇文章主要给大家介绍了关于Vue中计算属性和属性侦听的相关资料,需要的朋友可以参考下
    2021-10-10
  • 部署Vue项目到服务器后404错误的原因及解决方案

    部署Vue项目到服务器后404错误的原因及解决方案

    文章介绍了Vue项目部署步骤以及404错误的解决方案,部署步骤包括构建项目、上传文件、配置Web服务器、重启Nginx和访问域名,404错误通常是由于历史模式问题导致的,解决方法是修改Nginx配置,将所有页面请求重定向到index.html,并在Vue应用中覆盖所有路由情况
    2025-02-02
  • vue实现商品列表的添加删除实例讲解

    vue实现商品列表的添加删除实例讲解

    在本篇内容里小编给大家分享的是关于vue实现商品列表的添加删除实例讲解,有兴趣的朋友们可以参考下。
    2020-05-05
  • vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀

    vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀

    这篇文章主要介绍了vue 项目打包通过命令修改 vue-router 模式 修改 API 接口前缀的相关知识,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧
    2018-06-06

最新评论