tulip notes
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Star-Lord

希望一天成为大师的学徒
首页
  • 学习笔记

    • 《Vue》
  • 踩坑日记

    • JavaScript
  • MQ
  • Nginx
  • IdentityServer
  • Redis
  • Linux
  • Java
  • SpringBoot
  • SpringCloud
  • MySql
  • docker
  • 算法与设计模式
  • 踩坑与提升
  • Git
  • GitHub技巧
  • Mac
  • 网络
  • 项目构建合集
  • 一些技巧
  • 面试
  • 一些杂货
  • 友情链接
  • 项目发布
收藏
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • 基础

  • 组件

    • 组件基础
      • 为什么要设计组件
        • 什么叫组件
      • 如何使用
        • 组件的类型
        • 如何使用组件
      • 组件跟Vue实例的区别
        • data必须是一个函数
        • 组件没有el
      • 总结
    • 组件的一些注意点
    • 组件之间的传值
    • 组件间的调用
    • 自定义事件
    • 全局事件总线
    • Prop 验证 与 非 Prop 的 Attribute
    • 兄弟组件传值
    • 父组件调用子组件方法并传入值
    • 插槽slot
    • 动态组件与 v-once 指令
    • vue父子组件的生命周期顺序
  • 过渡&动画

  • 可复用性&组合

  • 工具

  • 规模化

  • Vuex

  • 其他

  • 《Vue》笔记
  • 组件
EffectTang
2023-09-12
目录

组件基础

# 组件基础

# 为什么要设计组件

Vue设计组件的目的是为了提高代码的可组合性、可复用性和可维护性。组件化开发是一种将复杂的用户界面划分为独立、可重用部件的方法,使开发人员可以更加高效地构建复杂的应用程序。

通过将界面划分为多个组件,每个组件专注于特定的功能和责任,开发人员能够更好地组织和管理代码。组件可以被独立开发、测试和维护,从而提高开发效率和团队协作。

此外,Vue的组件化开发使得界面更易于扩展和定制化。开发人员可以根据应用的需求,自由组合、嵌套和复用各种组件,构建出满足用户需求的灵活、可定制的界面。

  • 提高复用性
  • 提高可扩展性

# 什么叫组件

上面的说法可能还是太模糊,具体一点讲就是:用来实现局部(特定)功能效果的代码合集(html/css/js/images/..)

# 如何使用

# 组件的类型

组件 (Component) 是 Vue.js 最强大的功能之一,在vue中组件有两种类型:

  • 非单文件组件:将组件的模板、脚本和样式分开写在不同的文件中。非单文件组件会使用一些静态文件服务器或者Webpack等工具来将这些文件打包成一个完整的HTML文件,然后通过引入这个HTML文件来使用这个组件。
  • 单文件组件:将组件的模板(template)、脚本(script)和样式(style)写在同一个文件中,通常使用.vue作为文件扩展名

在实际开发中,用得最多的是单文件组件,因为它提供了更好的代码组织和维护性。下面就是一个单文件组件的例子

<template>
  <div>
    <h1>{{ message }}</h1>
  </div>
</template>

<script>
export default {
  data() {
    return {
      message: 'Hello World!'
    };
  }
};
</script>

<style scoped>
h1 {
  color: red;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# 如何使用组件

现实生活中你想要别人帮你做事,首先你需要知道别人叫什么。使用组件也是如此,如果你不知道组件的名称,即使它存在,你也无法使用它。如何知道组件的名字呢,vue中称为“注册”,必须先对组件进行注册后,才能使用。

注册有全局注册和局部注册两种方式。

  • 全局注册:任何vue实例都可以使用
// 创建Vue实例之前注册组件 全局注册
Vue.component('my-component', {
  template: '<div>My Component</div>'
});

// 创建Vue实例
new Vue({
  el: '#app'
});
1
2
3
4
5
6
7
8
9

注册成功后,你可以用该组件进行构建了

<div>
  <!-- 创建一个 todo-item 组件的实例 -->
  <todo-item></todo-item>
</div>
1
2
3
4
  • 局部注册:在特定的Vue组件内部注册其他组件的方式。通过在组件的components选项中添加组件的定义,注册后的组件只有在该实例作用域下有效。

简单说就是A注册了B组件,则组件B只能在A中使用,无法在C中使用

<template>
  <div>
    <h1>主要组件</h1>
    <HelloWorld></HelloWorld> <!-- 使用注册的局部组件 -->
  </div>
</template>

<script>
import HelloWorld from './HelloWorld.vue' // 导入局部组件

export default {
  name: 'App',
  components: {
    HelloWorld // 注册局部组件
  }
}
</script>

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 组件跟Vue实例的区别

# data必须是一个函数

在上述例子中,你可能会发现它的 data 并不直接提供一个对象,取而代之的是函数。一个组件的 data 选项必须是一个函数,因为这样每个实例可以维护一份被返回对象的独立的拷贝。

data () {
  return {
    count: 0
  }
}
1
2
3
4
5

子组件有可能会被调用多次,而每次调用时的data数据都应该是独立的。使用函数可以避免组件被复用时,数据存在引用的关系。这样才不会出现每个子组件数据相互影响的情况。

# 组件没有el

因为组件是可复用的 Vue 实例,所以它们与 new Vue 接收相同的选项,例如 data、computed、watch、methods 以及生命周期钩子等。仅有的例外是像 el 这样根实例特有的选项。

因为最终所有的组件都要经过一个vue实例的管理,由vue实例中的el决定服务哪个容器。

# 总结

使用组件的三大步骤-

  1. 定义组件
  2. 注册组件
    1. 局部注册(实际开发中用得更多)
    2. 全局注册
  3. 使用组件(写组件标签) < HelloWorld >< /HelloWorld>
上次更新: 2025/04/23, 16:23:16
生命周期
组件的一些注意点

← 生命周期 组件的一些注意点→

最近更新
01
面向切面跟自定义注解的结合
05-22
02
时间跟其他数据的序列化
05-19
03
数据加密与安全
05-17
更多文章>
Theme by Vdoing | Copyright © 2023-2025 EffectTang
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式