Vue 2.0学习笔记:组件的使用

从这一节开始正式进入对Vue 2.0组件的系统学习。在Vue中,组件是最强大的功能之一。而且Vue组件涉及到的知识点也非常的多,比如组件的使用,prop、事件、slots以及动态动组等等。在一节的内容中无法全部涵盖这些知识点。所以将会分几节内容来整理Vue组件中的学习笔记。

什么是组件

什么是组件?围绕这个问题,我查阅了这方面的相关资料,特别是几位大神@hax、@飞叔和@云龙有关于组件相关的方面的阐述,让我受益非浅。建议大家多花点时间先阅读几位大神整理的组件相关的内容:

  • 《关于前端开发中“模块”和“组件”概念的思考》by @hax

  • 《2015前端组件化框架之路》by @飞叔

  • 《Web应用的组件化:基本思路》by @飞叔

  • 《Web应用的组件化:管控平台》by @飞叔

  • 《前端工程与模块化框架 》by @云龙

我是一位CSSer,在很多时候也会聊模块化和组件相关的概念,接受这方面最早的概念来自于Bootstrap这个CSS Framework。后来我更喜欢Brad Frost提出的原子设计(Atomic Design):

Vue 2.0学习笔记:组件的使用_第1张图片

如果从这个角度出发,Web中的任何一个元素(对应原子设计中的Atoms原子),都可以把其当作一个组件,比如最常见的按钮。另外也可以把由多个原子构成的构建(Molecules分子),也可以当作是一个组件,比如一个搜索表单。

Vue 2.0学习笔记:组件的使用_第2张图片

在CSSer的世界中,经常会把Web中可复用的部分划分为组件。组件即是使用一个到多个元素(Atoms原子)组成的任何界面部分。比如下面的三个卡片,虽然在外观上长得不全一致,但他用到的元素近乎是一样的。

Vue 2.0学习笔记:组件的使用_第3张图片

但需要注意的是,组件并不一定需要模块化

组件和模块化两者有什么区别,强烈建议阅读贺老(@hax)的《关于前端开发中“模块”和“组件”概念的思考》一文。

或许这样理解组件有点粗陋,那么我们来看看Vue官网对组件是怎么定义的:

组件(Component)是Vue最强大的功能之一。组件可以扩展HTML元素,封装可重用的代码。在较高层面上,组件是自定义元素,Vue的编译器为它添加特殊功能。在有些情况下,组件也可以表现为用is特性进行了扩展的原生HTML元素。所有的Vue组件同时也都是Vue的实例,所以可以接受相同的选项对象(除了一些根级特有的选项)并提供相同的生命周期钩子。

Vue提供一个组件系统,提供了一种抽象,让我们可以使用独立可复用的小组件来构建大型应用,任意类型的应用界面都可以抽象为一个组件树:

Vue 2.0学习笔记:组件的使用_第4张图片

越来越感觉组件类似原子设计中的,原子、分子和组织。而整个应用界面类似于原子设计中的模板和页面。

组件的创建

既然Vue的组件是一个非常强大的特性,那么我们首要要了解的是在Vue中怎么创建组件。@ANTHONYGORE在他的一篇博文中介绍了七种创建Vue组件的方式。不管使用哪种方式,创建Vue的组件都有三个基本步骤:创建组件构造器、注册组件和使用组件

Vue 2.0学习笔记:组件的使用_第5张图片

比如,我们创建一个Button组件:

Vue 2.0学习笔记:组件的使用_第6张图片

添加点CSS样式,看到的效果如下:

Vue 2.0学习笔记:组件的使用_第7张图片

通过浏览器开发者工具查看,使用Vue的组件和使用HTML的元素
script>

内联模板inline-template方式:

 
   

Vue.component('my-button',{    // ... })

<my-button inline-template>    <button>点击我button>
my-button>

除了上述方式,还有