欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > Vue全局组件

Vue全局组件

2025/2/22 16:51:52 来源:https://blog.csdn.net/weixin_45134711/article/details/139625584  浏览:    关键词:Vue全局组件

全局组件

首先说明一下,本人是前端小学生级别的菜鸡,吐槽的话请口下留情,在评论区指出错误或者补充不足,我会很喜欢,互喷不会进步,相互指点才会。。。。谢谢大家啦

目录

  • 全局组件
    • 目录
    • 内置模板
    • 引入模板
    • 优点
    • 场景
    • 缺点

📌全局组件是通过 Vue.component 方法注册的,它实际上是一个 Vue 组件的构造函数的实例。当你全局注册一个组件后,这个组件就可以在整个应用中的任何地方使用。

通过 Vue.component 方法定义全局组件。这个方法接受两个参数:

  1. 组件的名称:在模板中使用的标签名。
  2. 组件的选项对象:包含组件的模板、数据、方法等。
  3. 全局组件通过 Vue.component() 方法注册全局组件,可以在应用的任何位置使用。例如:
// 定义一个全局组件
Vue.component('my-component', {template: '<div class="my-component">{{ message }}</div>',data() {return {message: 'Hello from MyComponent!'};}
});// 创建 Vue 实例
new Vue({el: '#app',template: `<div><h1>Hello from Parent Component!</h1><my-component></my-component></div>`
});

这些组件是全局注册的。也就是说它们在注册之后可以用在任何新创建的 Vue 根实例 (new Vue) 的模板中。比如:

<div id="app"><component-a></component-a><component-b></component-b><component-c></component-c>
</div>Vue.component('component-a', { /* ... */ })
Vue.component('component-b', { /* ... */ })
Vue.component('component-c', { /* ... */ })new Vue({ el: '#app' })

📌在所有子组件中也是如此,也就是说这三个组件在各自内部也都可以相互使用。

内置模板

📌在component中直接书写template,极度不推荐

<script src="../../vue.js"></script><body><div id="app">{{title}}<!-- 全局组件的使用 --><hello></hello><hello></hello><hello></hello><!-- 多次使用相当于多次new,所有的组件使用之间并无关联 -->这部分在后来的VueComponent中会有解释</div></body><script>new Vue({el:"#app"})// 定义全局组件// component组件定义("组件名字",{组件数据})Vue.component("hello", {// 定义当前组件的结构template: `<div><p>这是{{title}}组件</p><span>{{num}}</span><hr><button @click="add">按钮</button></div>`,// 定义当前组件的数据data() {return {title: "hello world",num: 0,};},// 定义当前组件的方法methods: {add() {this.num++;},},});</script>

📌但是以上案例并不推荐使用,因为在js的字符中书写html代码,不会自动进行语法检查,不方便书写,也不方便调试

引入模板

📌建议使用vue提供的template标签,创建模板,然后再注册到组件

<script src="../../vue.js"></script><body><div id="app"><!-- 使用全局组件 --><world></world></div></body><!-- 使用模板 --><template id="aaa"><div><h4>{{title}}</h4><input type="text" v-model="msg" /><span>{{msg}}</span></div></template><script>let app = Vue.createApp({data() {return {title: "这是全局组件",};},});// 定义全局组件方法二// component组件定义("组件名字",{组件数据})app.component("world", {template: "#aaa",// 定义当前组件的数据data() {return {title: "hello world",msg: "今天不太开心",};},});app = app.mount("#app");</script>

优点

  1. 方便复用:全局组件可以在应用程序的任何地方使用,不需要重复注册。
  2. 统一管理:所有全局组件可以集中管理,便于维护和更新。
  3. 简化模板:在需要频繁使用的组件时,全局注册可以简化模板中的组件引用。
  4. 命名约定:全局组件名称最好遵循 kebab-case(短横线连接)命名法,以避免与 HTML 元素名称冲突。

场景

  1. 通用组件:如按钮、表单输入、模态框等在多个地方使用的通用 UI 组件。
  2. 基础布局:如页面布局组件(头部、底部、侧边栏)等。
  3. 第三方组件库:通过全局注册引入和使用第三方 UI 库的组件。

缺点

  1. 命名冲突:全局组件在全局命名空间中注册,可能会导致命名冲突。
  2. 潜在的依赖性:全局组件在任何地方都可用,可能会导致组件之间的耦合度增加。
  3. 加载时间:全局组件在应用程序启动时加载,可能会增加初始加载时间,特别是当组件数量较多时。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com