当前位置: 首页 > news >正文

Vue3 全局 API 转移详解

目录

一、什么是全局 API?

二、Vue3 为什么要转移?

三、Vue3 的全局 API 转移

四、常见 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

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


五、特殊说明

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

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

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

  3. 全局过滤器 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。

http://www.dtcms.com/a/423983.html

相关文章:

  • Vue中的计算属性和监视属性
  • Element UI 组件样式自定义详解与最佳实践
  • Kali Linux 2025.3 正式发布:更贴近前沿的安全平台
  • 做卡盟网站教程拓者网室内设计官网app
  • 一流的山西网站建设网站建设合同英文
  • CMakeLists.txt语法(四)
  • 22.Nginx 服务器 LNMP项目
  • 海口高端网站建设网站的基本概念
  • 怎么兼职做网站首饰行业网站建设策划
  • 在 Windows Subsystem for Linux (WSL) 上安装 Rocky Linux
  • NuttX 操作系统核心组件
  • CKAD-CN 考试知识点分享(14) NetworkPolicy 网络策略
  • 硅基计划 4.0 算法 哈希表
  • java源码英文翻译
  • 算法题(221):多重背包(二)
  • sched-domain
  • 企业网站建设中企动力免费的网页游戏
  • python(77) python脚本与jenkins pipeline交互的5种方式
  • 网站多久备案一次百度灰色关键词排名
  • 内江建设局网站注册网站刀具与钢材范围
  • 如何将安卓应用迁移到鸿蒙?
  • wordpress商业网站wordpress虚拟
  • dede 网站名称 空的团员建设网站
  • C++(Qt)软件调试---Linux动态库链接异常排查(38)
  • 记录 Qt 跨线程 信号无法触发槽函数问题
  • wireshark 01——安装
  • 网上最好购物网站邯郸网上销售公司
  • 使用top域名做网站seo职位是什么意思
  • CUDIS 健康协议在 Sui 上打造更健康的未来
  • 装修网站排行榜前十名有哪些南昌网站建设哪家最好