百科狗-知识改变命运!
--

组件注册 - app.component() 注册全局组件,components 选项注册局部组件。 - vue 组件

乐乐12个月前 (11-21)阅读数 17#技术干货
文章标签组件

组件注册

一个 Vue 组件需要被“注册”使得 Vue 在渲染模板时能找到其实现。有两种方式来注册组件:全局注册和局部注册。

全局注册

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

import { createApp } from 'vue'
const app = createApp({})

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

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

import MyComponent from './App.vue'
app.component('MyComponent', MyComponent)


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

import { createApp } from 'vue'
const app = createApp({})

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


组件注册 - app.component() 注册全局组件,components 选项注册局部组件。 - vue 组件

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

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


局部注册

全局注册的组件虽然十分方便,但也有以下几个短板:

  • 全局注册使构建系统无法移除未使用的组件(也叫“tree-shaking”)。如果你全局注册了一个组件,却一次都没有使用,它仍然会出现在最终的构建产物中。
  • 全局注册在大型项目中使项目的依赖关系变得不那么明确。在父组件中使用子组件时,很难定位子组件的实现。这可能会影响未来长期的可维护性,类似于使用过多的全局变量。

局部注册将注册组件的可用性限定在当前组件的范围内。它使依赖关系更加明确,并且对 tree-shaking 更加友好。

当你在单文件组件中使用了

如果不使用

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

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


组件名格式

在整个指引中,我们都使用PascalCase作为组件名的注册格式,这是因为:

  • PascalCase是合法的 JavaScript 标识符。这使得在 JavaScript 中导入和注册组件都很容易,同时 IDE 也能提供较好的自动补全。
  • 在模板中更明显地表明了这是一个 Vue 组件,而不是原生 HTML 元素。同时也能够将 Vue 组件和自定义元素(web components)区分开来。

在单文件组件和内联字符串模板中,我们都推荐这样做。但是,PascalCase的标签名在 DOM 模板中是不可用的,需要使用kebab-case形式。


幸运的是,Vue 支持将使用kebab-case的标签,解析为使用PascalCase注册的组件。这意味着一个以MyComponent为名注册的组件,在模板中可以通过引用。这允许我们在不同来源的模板中始终使用同一份 JavaScript 组件注册代码。

鹏仔微信 15129739599 鹏仔QQ344225443 鹏仔前端 pjxi.com 共享博客 sharedbk.com

免责声明:我们致力于保护作者版权,注重分享,当前被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!邮箱:344225443@qq.com)

图片声明:本站部分配图来自网络。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,本着为中国教育事业出一份力,发布内容不收取任何费用也不接任何广告!)