组件化得背景
如果我们将一个页面中所有的处理逻辑全部放在一起,处理起来就会变得非常复杂,而且不利于后续的管理以及扩展。我们讲一个页面拆分成一个个小的功能块,每个功能块完成属于自己这部分独立的功能,这就形成了组件化。
定义
组件是可复用的 Vue 实例。
优点
可以增加代码的复用性、可维护性和可测试性。提高开发效率, 方便重复使用,简化调试步骤,提升整个项目的可维护性,便于协同开发,是高内聚、低耦合代码的实践。
使用场景
- 通用组件:实现最基本的功能,具有通用性和复用性。例如按钮组件、布局组件等
- 业务组件:完成具体的业务,具有一定的复用性。例如登录、轮播图、提示信息等
- 页面组件:组织应用各部分的独立内容,需要根据条件切换页面内容。例如列表页、详情页
组件设计
如何使用组件
- 注册:Vue.component(),component选项,单文件
- 通信:
props、$emit('')/$on、provide/inject,$children/$parent/$root/$attrs/$listeners - 内容分发:
<slot>、<template>、v-slot
组件的本质
vue中的组件经过如下过程:
组件配置 => VueComponent实例 => render() => Virtual Dom => Dom
所以组件的本质是产生虚拟Dom
注册组件的步骤
-
组件的使用分成三个步骤:
- 创建组件构造器:调用Vue.extend()方法
- 注册组件:调用Vue.component()方法
- 使用组件:在Vue实例的作用范围内
<template>
// 3.使用组件
<my-component></my-component>
</template>
<script>
// 1.创建组件构造器对象
const cpnC = Vue.extend({
template: `
<div>
<h2>我是标题</h2>
<p>我是内容, 哈哈哈哈</p>
<p>我是内容, 呵呵呵呵</p>
</div>`
})
// 2.注册组件
Vue.component('my-component', cpnC)
const app = new Vue({
el: '#app',
data: {
message: '你好啊'
}
})
</script>