什么是组件?
组件的出现,就是为了拆分Vue实例的代码量的,能够让我们以不同的组件,来划分不同的功能模块,将来我们需要什么样的功能,就可以去调用对应的组件即可。
组件化和模块化的不同:
-
模块化:是从代码逻辑的角度进行划分的;方便代码分层开发,保证每个功能模块的职能单一
-
组件化:是从UI界面的角度进行划分的;前端的组件化,方便UI组件的重用
全局组件定义的四种方式:
-
使用 Vue.extend 配合 Vue.component
-
直接使用 Vue.component
-
将模板字符串,定义到script标签中,同时,需要使用 Vue.component 来定义组件
-
将模板字符串,定义到template标签中,同时,需要使用 Vue.component 来定义组件(一般都是使用这种方式)
如图:
局部组件使用components属性定义:
使用:is属性可以切换不同的子组件:
什么是插槽?
插槽就是子组件中的提供给父组件使用的一个占位符,用<slot></slot> 表示,父组件可以在这个占位符中填充任何模板代码,如 HTML、组件等,填充的内容会替换子组件的<slot></slot>标签。
例:
具名插槽:具名插槽其实就是给插槽娶个名字。一个子组件可以放多个插槽,而且可以放在不同的地方,而父组件填充内容时,可以根据这个名字把内容填充到对应插槽中。
例: