Vue 3 中通过 createApp 创建的 app 实例的所有核心方法,包含完整示例、使用说明及对比表格

以下是 Vue 3 中通过 createApp 创建的 app 实例的所有核心方法,包含完整示例、使用说明及对比表格:
在这里插入图片描述


1. app.component()

作用:注册全局组件
参数

  • name:组件名称(字符串)
  • component:组件构造器(对象或函数)
    示例
// 注册全局组件
const app = createApp(App);
app.component('MyButton', {
  template: '<button>{{ text }}</button>',
  props: ['text']
});

// 在 App.vue 中直接使用 <my-button text="点击" />

2. app.directive()

作用:注册全局指令
参数

  • name:指令名称(字符串)
  • definition:指令定义对象(包含 mountedupdated 等钩子)
    示例
// 注册 v-focus 指令
app.directive('focus', {
  mounted(el) {
    el.focus();
  }
});

// 在模板中使用 <input v-focus />

3. app.mixin()

作用:注册全局混入
参数

  • mixinOptions:混入对象(包含选项如 datamethods 等)
    示例
// 全局混入一个方法
app.mixin({
  methods: {
    showAlert() {
      alert('全局混入的方法');
    }
  }
});

// 在任意组件中直接调用 this.showAlert()

4. app.config

作用:配置 Vue 实例
常用属性

  • productionTip:控制生产环境提示
  • devtools:启用/禁用开发者工具
    示例
// 禁用生产环境提示
app.config.productionTip = false;

// 禁用开发者工具
app.config.devtools = false;

5. app.use()

作用:安装插件
参数

  • plugin:插件函数(可接受 app 实例和其他参数)
    示例
// 安装 axios 插件
import axios from 'axios';
app.use(axios, { baseURL: 'https://api.example.com' });

// 在组件中通过 this.$axios 使用

6. app.provide()

作用:提供响应式数据给后代组件
参数

  • key:数据标识符(字符串或 Symbol)
  • value:数据值
    示例
// 提供用户信息
app.provide('user', reactive({ name: 'Alice' }));

// 在后代组件中通过 inject 获取
const user = inject('user');
console.log(user.name); // Alice

7. app.mount()

作用:挂载应用到 DOM
参数

  • element:挂载目标(DOM 元素或选择器字符串)
    示例
// 挂载到 #app 元素
const vm = app.mount('#app');
console.log(vm); // 返回根组件实例

8. app.unmount()

作用:卸载应用实例
参数:无
示例

// 先挂载再卸载
const vm = app.mount('#app');
vm.$el; // 挂载后的 DOM 元素
app.unmount();
vm.$el; // null

对比表格总结

方法作用参数返回值示例简写
component注册全局组件name: string, component: Object/FunctionAppapp.component('MyBtn', MyBtnComponent)
directive注册全局指令name: string, definition: { mounted: Function, ... }Appapp.directive('focus', { mounted: el => el.focus() })
mixin注册全局混入mixinOptions: ObjectAppapp.mixin({ methods: { showAlert() { ... } } })
config配置 Vue 实例通过属性修改(如 app.config.productionTip = falseapp.config.devtools = false
use安装插件plugin: FunctionAppapp.use(axios, { baseURL: '...' })
provide提供响应式数据key: string/Symbol, value: anyAppapp.provide('user', reactive({ name: 'Alice' }))
mount挂载应用到 DOMelement: string/HTMLElement根组件实例app.mount('#app')
unmount卸载应用实例app.unmount()

关键差异对比

方法作用范围数据/功能影响典型场景
component全局组件注册全局可用,无需局部注册统一管理公共组件
directive全局指令定义全局指令复用自定义交互逻辑(如焦点、动画)
mixin全局选项合并可能导致代码混乱,慎用共享通用方法/计算属性
config配置 Vue 核心行为影响整个应用的运行环境禁用开发者工具或静默模式
use插件集成扩展 Vue 功能(如状态管理、HTTP 请求)安装 Vuex、Vue Router 等插件
provide/inject祖先到后代通信响应式数据传递,避免 prop 钉扎在深层组件中共享数据
mount/unmount应用生命周期管理控制应用的挂载和卸载动态加载/卸载 Vue 应用

使用建议

  • 组件/指令/混入:优先使用局部注册,避免全局污染。
  • 插件管理:通过 use 安装插件,保持代码模块化。
  • 提供/注入:替代 prop 钉扎,适用于跨层级数据传递。
  • 配置:仅在必要时修改(如生产环境优化)。

如果需要更具体场景的代码示例或深入解释,请进一步说明!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱的叹息

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值