Vue3全局API

264 阅读2分钟

createApp()

用来创建一个应用实例

import { createApp } from 'vue';
// 引入一个根组件
import App from './App.vue';
// 创建一个应用实例
const app = createApp(App);

app.provide()

全局依赖注入

// 全局依赖注入,所有的组件都可以通过inject获取
app.provide("msg", "hello");

app.component()

全局注册一个组件

// 引入一个组件
import MyComponent from './components/MyComponent.vue';
// 全局注册一个组件,所有组件都可以使用
app.component("MyComponent", MyComponent);

app.directive()

全局注册指令

// 全局注册一个指令,所有组件中都可以使用该指令(v-指令名)
// 简写形式
app.directive('color', (el, binding) => {
    // 该函数会在 mounted 和 updated 时触发
    el.style.color = binding.value;
})

// 非简写形式,可以指定任意生命周期内执行
app.directive('MyDirective', {
    created(el, binding) {},
    beforeMount() {},
    mounted() {},
    // ...
})
/**
    指令的钩子会传递以下几种参数:
    el:指令绑定到的元素。这可以用于直接操作 DOM。
    binding:一个对象,包含以下 property。
        value:传递给指令的值。例如在 v-my-directive="1 + 1" 中,值是 2。
        oldValue:之前的值,仅在 beforeUpdate 和 updated 中可用。无论值是否更改,它都可用。
        arg:传递给指令的参数 (如果有的话)。例如在 v-my-directive:foo 中,参数是 "foo"。
        modifiers:一个包含修饰符的对象 (如果有的话)。例如在 v-my-directive.foo.bar 中,修饰符对象是 { foo: true, bar: true }。
        instance:使用该指令的组件实例。
        dir:指令的定义对象。
    vnode:代表绑定元素的底层 VNode。
    prevNode:之前的渲染中代表指令所绑定元素的 VNode。仅在 beforeUpdate 和 updated 钩子中可用。
*/

app.use()

使用插件

// 引入route插件
import router from './router';
// 使用router插件
app.use(router);

aoo.mixin()

混合, vue3不推荐使用,推荐采用组合式API。

app.config

每个应用实例都会暴露一个config对象,其中包含了对这个应用的配置设定。

app.config.errorHandler

用于为应用内传递的未捕获的错误指定一个全局处理函数。

app.config.errorHandler = (err, instance, info) => {
  // 处理错误,例如:报告给一个服务
}

app.config.warnHandler

用于为 Vue 的运行时警告指定一个自定义处理函数。

app.config.warnHandler = (msg, instance, trace) => {
  // `trace` is the component hierarchy trace
}

app.config.globalProperties

一个用于注册能够被应用内所有组件实例访问到的全局 property 的对象。

app.config.globalProperties.msg = 'hello'

app.mount()

将应用程序实例挂载在一个容器元素中。

app.mount('#app');

app.unmount()

卸载一个已经挂载好的应用实例,会触发应用组件树上所有组件的卸载生命周期钩子。

app.unmount();