Vue -组件

目录

1、组件的概念及作用:

2、组件基础

1、组件的基本使用 

2、 组件本质

3、组件的命名规则 

4、template选项

5、data选项

3、组件的分类:

4、全局组件

5、局部组件 

6、组件抽取

7、组件通讯

1、父组件向子组件传递数据

2、子组件向父组件传数据

3、非父子组件之间的数据传递

 8、插槽

1、何为插槽?

2、slot的基本使用

 3、具名slot的使用 

 4、编译作用域 

​  5、作用域插槽(*较难理解)


1、组件的概念及作用:

组件(Component)是Vue.js最强大的功能之一。. 组件可以扩展HTML元素,封装可以重复使用的代码。. 在较高层次上,组件就是自定义元素,Vue.js的编辑器为它添加特殊功能。

一般的前端页面由头部、中间区域、底部构成,中间区域又可以分为各种的功能模块,例如轮播图、商品展示区等等。vue组件的作用就是将不同的功能区域独立的封装起来,可以封装的部分有结构、样式、逻辑代码。这样封装的好处就是当页面中的某个功能出现问题的时候我们只需要找到对应的组件进行维护处理就行了,而不再需要考虑整个页面,这样既提高了功能的复用性也提高了功能的可维护性。

2、组件基础

1、组件的基本使用 

p标签内容

在app元素中(或者叫vue实例)里面存在一个叫的自定义标签,这个标签是我们自定义的标签,实际上在HTML中是不存在的。该标签其实就是组件的标签名,我们只需要在特定位置书写该标签就能使用到该标签所对应的组件。 

2、 组件本质

组件在本质上是个可复用的vue实例。它们可以和Vue根组件一样有相同的选项,例如:data、methods、以及生命周期钩子等,只有el选项是vue根实例特有的,因为el代表的是挂载元素, 也就是说根元素是需要挂载到页面上某个元素身上的。而组件是需要被其他组件或者是根实例使用的因此不需要挂载到页面中的某个元素身上。 

3、组件的命名规则 

组件的命名规则有两种方式:

kebab-case(驼峰命名):"my-component"

PascalCase(帕斯卡命名):"MyComponent"

【注意】无论采用上面哪一种的命名方式,在使用组件时都只能使用kebab-case(驼峰命名)来使用组件。

Vue.component("my-component",{/*选项对象*/})
Vue.component("MyComponent",{/*选项对象*/})

4、template选项

template,模板的意思。用于设置组件的结构,最终通过标签被引入根实例或者是其他组件中。

【注意】在template中只能设置一个根元素,也就是说只能有一个div标签,其他标签都需要写在div标签中。此外,在template中也可以设置插值表达式(也就是mustache表达式)

  Vue.component("my-component",{
        template:`   
           

my-component组件:{{1+2*4}}

` })

5、data选项

data选项用于存储组件的数据,和根实例不同,组件的data选项必须是一个函数,数据设置在返回值对象中。 

data选项为什么是一个函数(或者叫方法)?是因为这种实现方式可以确保每个组件实例都可以维护一份被返回对象的拷贝,不会互相影响。因为在实际项目中组件可能会被多次引用,每次引用都会调用一次组件结构,这时候为了确保每个被引用组件的数据是相互独立的而不是公用的,就需要使用作用域对其进行隔离,而data是个函数,函数内部是有作用域的,当我们在函数内部声明了数据以后利用该函数进行多次调用那么内部相当于形成了多个独立的作用域,每个作用域中的数据都是独立的。


    Vue.component("my-component",{
        template:`
           

{{title}}

{{content}}

`, data(){ return { title:'组件中的数据', content:'组件中的内容' } } })

3、组件的分类:

在vue中组件可以分为全局组件局部组件

全局组件:所谓的全局组件就是不仅仅可以在一个vue实例中使用,在其他vue实例或者组件中也可以使用的组件。

局部组件:所谓的局部组件就是只能在某个vue实例中使用的组件,在其他的vue实例中不能使用的组件。

4、全局组件

在组件基础中演示的例子就是注册全局组件的步骤,因此这里不再赘述。

5、局部组件 

局部组件在注册后只能在当前实例或者是组件中使用。




    
    组件



代码运行结果:

6、组件抽取

所谓的抽取组件实际上是单独设置选项对象,这样是为了简化代码,方便阅读和维护。 可以将组件抽取到外面,在需要注册时直接将组件的对象注册到其他组件或者实例中即可。

组件抽取有两种方式:

1、不使用标签的选项抽取方式(全部抽取);这种方式可以将组件的左右选项,例如template、data、methods全部抽取出来。

2、使用