Vue组件化思想

如果将一个页面中所有的处理逻辑全部放在一起,那么处理起来会非常复杂混乱,而且不利于后续的管理以及扩展。

如果将页面拆分成一个个小的功能块,每个功能块完成属于自己的独立功能,那么整个页面的管理和维护就变得容易了。

Vue组件化思想_第1张图片
Vue组件化思想_第2张图片

一个页面可以分为多个组件,每个组件又可以细分

Vue的组件思想

①它提供了一种抽象,让我们开发出一个个独立可复用的小组将来构造我们的应用。

②任何的应用都会被抽象成一棵组件树。

一、注册组件的基本步骤

组件的使用分为三个步骤

  1. 创建组件构造器

  2. 注册组件(全局注册、局部注册)

  3. 使用组件

1.1 调用Vue.extend() API:创建组件构造器:const x = Vue.extend({ })

2.1 调用Vue.component() API:注册组件

3.1 在Vue实例范围内使用组件

1.1.1 创建组件模板:(旧的写法)
x 是构造器名称,在注册是会引用此名称。组件就相当于一个html页面,最外层要用一个div来包裹,然后再是内容。
const x = Vue.extend({
     
	template:
		`
		

我是组件标题

`
})
2.1.1 全局注册组件: 'my-cpn’是组件的标签名,x 是1.1.1的内容。也就是说,以后用到x 组件时,用就可以代替了。
Vue.component('my-cpn',x)
3.1.1 在Vue实例中使用:
<div id="app">
	<my-cpn>my-cpn>
div>

二、创建组件构造器步骤解析

1、Vue.extend() 创建的是一个组件构造器,通常在创建组件的地方,传入template代表自定义组件的模板,该模板就是在使用到组件的地方,要显示的HTML代码。旧写法参考1.1.1内容。

2、Vue.component()要传入两个参数,一个是注册组件的标签名称,一个是组件构造器的名称。如1.1.1中的 x 。

3、可以多重嵌套使用自定义组件,但组件标签中不能有其他内容

四、父组件和子组件

先构造两个组件:

第一个:
const cpn1 = Vue.extend({
     
	template :`

组件1

`
})
第二个:把组件1在组件2中注册:
const cpn2 = Vue.extend({
     
	template :`
	

组件2

`
, components:{ cpn1:cpn1 // 可以简写为一个cpn1 } })
组件2在实例中注册
const app = new Vue({
     
      el: "#app",
      components: {
     
        cpn2: cpn2 // 可以简写为一个cpn1
      },
})
使用:
  <div id="app">
    <cpn1>cpn1> // 未在实例中注册,不可使用
    <cpn2>cpn2> // 已在实例中注册,可以使用
  div>

其实const app实例也算是一个组件,只不过是页面的最大组件:根组件ROOT,所以vue实例也有template。子组件必须先于父组件创建,否则识别不了子组件。

五、注册组件的语法糖

此语法糖是将创建组件的构造器嵌入注册步骤当中。

原先:遵循1.1->2.1->3.1的顺序

现在 1.1和2.1结合:(全局)

Vue.component('my-cpn',{
     
	template: `

组件标题

`
})

(局部)

const app = new Vue({
     
      el: "#app",
      components: {
     
        	'my-cpn': {
     
        		template:`

组件标题

`
} }, })

六、组件模板抽离的写法

由于在template中写html语句的便捷性不好,所以将html语句抽离出来写

6.1 写在

你可能感兴趣的:(vue组件,组件化思想,vue)