全局注册组件

使用插件的一个原因是通过删除导入并将其替换为对 this 和/或 Vue 的访问来减少所有 Vue 应用程序文件中的样板文件。

Vue.js 组件通常在单文件组件中定义并显式导入。出于与定义全局方法和属性相同的原因,我们可能希望全局注册组件。这将使我们能够在所有其它组件模板中使用这些组件,而无需导入它们并将它们注册到组件(components)属性下。

当使用设计系统或跨代码库使用组件时,这可能非常有用。

全局注册组件有助于某些类型的更新,例如,如果文件名未向消费者公开,则在更改文件名时,只有一个更新路径,而不是每个用户一个。

假设 CustomButton.vue 文件中有一个 CustomButton 组件,如下所示:

<template>
    <button @click="$emit('click', $event)">
        <slot />
    </button>
</template>

我们可以按如下方式全局注册 CustomButton(这通常在 main.js 文件中完成):

// other imports
import CustomButton from './components/CustomButton.vue'

Vue.component('CustomButton', CustomButton)
// other global instance setup

我们现在可以在 App.vue 文件中使用它,而无需在本地注册或导入它:

<template>
    <div>
        <CustomButton>Click Me</CustomButton>
    </div>
</template>

这将按预期渲染,并带有一个名为 Click Me 的按钮:

image 2023 10 13 20 20 04 611
Figure 1. Figure 5.8: CustomButton rendering with a Click Me button

至此,我们探索了当组件经常在代码库中使用时,全局注册组件如何减少样板文件。

接下来,我们将了解一些有关如何提高 Vue.js 中组件灵活性的技巧。