【VUE入门级&温故知新】一文向您详细介绍~组件注册(选项式API)

大家好,我是DX3906

🌈 欢迎莅临我的个人主页 👈这里是我静心耕耘大前端领域、真诚分享知识与智慧的小天地!🎇

前面和大家分享了《如何从零开始创建一个 Vue 应用》

                             《VUE模板语法(超详细讲解)》

                             《一文向您详细介绍~Vue响应式基础(选项式API)》

                             《一文向您详细介绍~Vue计算属性computed(选项式API)》

                             《一文向您详细介绍~Class类 与 Style样式 绑定(选项式API)》

                             《一文向您详细介绍~条件渲染(选项式API)》

                             《一文向您详细介绍~列表渲染(选项式API)》

                             《一文向您详细介绍~事件处理v-on(选项式API)》

                             《一文向您详细介绍~模板引用ref(选项式API)》

                             《一文向您详细介绍~侦听器watch》

今天和大家共同学习一下Vue基于组合式API的组件注册

 

 背景

一个 Vue 组件在使用前需要先被“注册”,这样 Vue 才能在渲染模板时找到其对应的实现。组件注册有两种方式:全局注册和局部注册。

全局注册

我们可以使用 Vue 应用实例的 .component() 方法,让组件在当前 Vue 应用中全局可用。

import { createApp } from 'vue'

const app = createApp({})

app.component(
  // 注册的名字
  'MyComponent',
  // 组件的实现
  {
    /* ... */
  }
)

如果使用单文件组件,你可以注册被导入的 .vue 文件:

import MyComponent from './App.vue'

app.component('MyComponent', MyComponent)

.component() 方法可以被链式调用:

app
  .component('ComponentA', ComponentA)
  .component('ComponentB', ComponentB)
  .component('ComponentC', ComponentC)

全局注册的组件可以在此应用的任意组件的模板中使用:

<!-- 这在当前应用的任意组件中都可用 -->
<ComponentA/>
<ComponentB/>
<ComponentC/>

 所有的子组件也可以使用全局注册的组件,这意味着这三个组件也都可以在彼此内部使用。

局部注册

全局注册虽然很方便,但有以下几个问题:

  1. 全局注册,但并没有被使用的组件无法在生产打包时被自动移除 (也叫“tree-shaking”)。如果你全局注册了一个组件,即使它并没有被实际使用,它仍然会出现在打包后的 JS 文件中。

  2. 全局注册在大型项目中使项目的依赖关系变得不那么明确。在父组件中使用子组件时,不太容易定位子组件的实现。和使用过多的全局变量一样,这可能会影响应用长期的可维护性。

相比之下,局部注册的组件需要在使用它的父组件中显式导入,并且只能在该父组件中使用。它的优点是使组件之间的依赖关系更加明确,并且对 tree-shaking 更加友好。

局部注册需要使用 components 选项:

<script>
import ComponentA from './ComponentA.vue'

export default {
  components: {
    ComponentA
  }
}
</script>

<template>
  <ComponentA />
</template>

对于每个 components 对象里的属性,它们的 key 名就是注册的组件名,而值就是相应组件的实现。上面的例子中使用的是 ES2015 的缩写语法,等价于:

export default {
  components: {
    ComponentA: ComponentA
  }
  // ...
}

 请注意:局部注册的组件在后代组件中可用。在这个例子中,ComponentA 注册后仅在当前组件可用,而在任何的子组件或更深层的子组件中都不可用。

结语

🔥如果此文对你有帮助的话,欢迎💗关注、👍点赞、⭐收藏、✍️评论,支持一下博主~ 

  • 11
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Vue.js中的选项API和组合API都是用来定义组件的方,但它们之间有着很大的区别。 选项APIVue.js早期版本中使用的一种定义组件的方。在选项API中,组件定义以一个JavaScript对象的形呈现,包括data、methods、computed、watch等属性和方法。这种方比较简单易懂,适合较小的组件,但是在组件逻辑较为复杂时,选项API的代码会变得冗长难以维护。 组合APIVue.js 3.0版本中引入的一种全新的组件定义方。该API组件的逻辑拆分成逻辑组合的小函数,使得组件逻辑更加清晰、易于维护。组合API主要包括setup函数、响应API、生命周期钩子函数等。 setup函数是组合API的核心,它是一个在组件创建之前被调用的函数。setup函数可以返回一个对象,该对象中包含了组件的data、methods、computed、watch等属性和方法。与选项API不同的是,setup函数中不存在this上下文,而是通过传入的参数来访问组件实例。 响应API是组合API的另一个重要特性,它可以让组件中的数据具有响应的特性。使用响应API创建的数据可以自动更新视图,而不需要手动调用更新函数。 生命周期钩子函数在组合API中的使用方选项API相似,不同的是,生命周期钩子函数中的this上下文不再指向组件实例,而是需要通过传入的参数来访问组件实例。 综上所述,选项API和组合API都是Vue.js中定义组件的方,但是它们之间有着很大的区别。选项API适用于简单的组件,而组合API则适用于复杂的组件,它可以更好地拆分组件的逻辑,使得代码更加清晰、易于维护。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

寻找DX3906

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

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

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

打赏作者

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

抵扣说明:

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

余额充值