Vue.js 2 —组件(Component)化编程

一、模块与组件

模块
1. 理解 :  向外提供特定功能的 js 程序, 一般就是一个 js 文件
2. 为什么 :  js 文件很多,很复杂
3. 作用 :  复用 js, 简化 js 的编写, 提高 js 运行效率
组件
        组件是 Vue.js 最强大的功能之一。组件可以扩展 HTML 元素,封装可重用的代码。组件系统让我们可以用独立可复用的小组件来构建大型应用,几乎任意类型的应用的界面都可以抽象为一个组件树 :
Vue.js 2 —组件(Component)化编程_第1张图片
1. 理解 : 用来实现局部(特定)功能效果的代码集合(html /css /js /image …..)
2. 为什么 :  一个界面的功能很复杂
3. 作用 :  复用编码, 简化项目编码, 提高运行效率

二、模块化与组件化

Vue.js 2 —组件(Component)化编程_第2张图片

模块化
当应用中的 js 都以模块来编写的, 那这个应用就是一个模块化的应用。
组件化
Vue.js 2 —组件(Component)化编程_第3张图片
当应用中的功能都是多组件的方式来编写的, 那这个应用就是一个组件化的应用。

三、组件组成和引用

非单文件组件
1. 模板编写没有提示
2. 没有构建过程, 无法将 ES6 转换成 ES5
3. 不支持组件的 CSS
4. 真正开发中几乎不用
单文件组件
      组件最大的优势就是可复用性,当使用构建步骤时,我们一般会将Vue组件定义在一个单独的 .vue文件中,这被叫做单文件组件(简称SFC)
Vue.js 2 —组件(Component)化编程_第4张图片

一个.vue 文件的组成(3 个部分)

1. 模板页面
2. JS 模块对象

3. 样式

2.3.2. 基本使用
1. 引入组件
2. 映射成标签
3. 使用组件标签

组件引用 

Vue.js 2 —组件(Component)化编程_第5张图片

Vue.js 2 —组件(Component)化编程_第6张图片

四、组件嵌套关系

Vue.js 2 —组件(Component)化编程_第7张图片

Vue.js 2 —组件(Component)化编程_第8张图片 

Vue.js 2 —组件(Component)化编程_第9张图片

Vue.js 2 —组件(Component)化编程_第10张图片

Vue.js 2 —组件(Component)化编程_第11张图片

Vue.js 2 —组件(Component)化编程_第12张图片

五、组件注册方式

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

Vue.js 2 —组件(Component)化编程_第13张图片

 Vue.js 2 —组件(Component)化编程_第14张图片

Vue.js 2 —组件(Component)化编程_第15张图片 

六、组件传输数据(props)

        组件与组件之间不是完全独立的,而是有交集的,那就是组件与组件之间是可以传递数据的
传递数据的解决方案就是  props

Vue.js 2 —组件(Component)化编程_第16张图片

组件动态数据传递

Vue.js 2 —组件(Component)化编程_第17张图片

Vue.js 2 —组件(Component)化编程_第18张图片

组件传递多种数据类型

       通过props传递数据,不仅可以传递字符串类型的数据,还可以是其他类型,例如:数字、对象、数组等但实际上任何类型的值都可以作为props的值被传递

Vue.js 2 —组件(Component)化编程_第19张图片

Vue.js 2 —组件(Component)化编程_第20张图片

Vue.js 2 —组件(Component)化编程_第21张图片

Vue.js 2 —组件(Component)化编程_第22张图片

Vue.js 2 —组件(Component)化编程_第23张图片

Vue.js 2 —组件(Component)化编程_第24张图片

通过props传递函数实现子传父

Vue.js 2 —组件(Component)化编程_第25张图片

Vue.js 2 —组件(Component)化编程_第26张图片

组件传递Props效验

 Vue组件可以更细致地声明对传入的props的校验要求




Vue.js 2 —组件(Component)化编程_第27张图片 Vue.js 2 —组件(Component)化编程_第28张图片

  props校验是在Vue.js中用于验证和约束组件接收的数据类型和默认值的机制。在上述代码中,props对象定义了三个属性:titleagenames,每个属性都有指定的数据类型和默认值。

  • title 属性的类型为字符串 (String),默认值为空字符串 ("")。
  • age 属性的类型为数字 (Number),默认值为0。
  • names 属性的类型为数组 (Array),默认值为一个空数组 ([])。

        这样做的目的是为了确保父组件传递给子组件的数据满足特定的类型要求,并提供合适的默认值以防止意外错误。对于 names 属性,default 使用的是一个函数来返回默认的数组,这是因为在Vue中,如果使用对象或数组作为默认值,需要使用一个函数来返回新的对象或数组实例,以避免数据共享。

组件事件实现子传父

        在组件的模板表达式中,可以直接使用 $emit方法触发自定义事件触发自定义事件的目的是组件之间传递数据。(子给父传数据)

Vue.js 2 —组件(Component)化编程_第29张图片

Vue.js 2 —组件(Component)化编程_第30张图片





组件事件配合使用v-model

Vue.js 2 —组件(Component)化编程_第31张图片

Vue.js 2 —组件(Component)化编程_第32张图片

透传属性 (attribute)

        “透传attribute”指的是传递给一个组件,却没有被该组件声明为props或emits的attribute或者v-on事件监听器。最常见的例子就是class、style和id
当一个组件以单个元素为根作渲染时,透传的attribute会自动被添加到根元素上

七、组件生命周期


你可能感兴趣的:(前端,html5,javascript,css3,vue.js,前端,前端框架)