Vue中的组件化基础知识

122 阅读2分钟

组件化

一、什么是组件化

将大的问题分成一个个小问题,放在开发中就是讲一个页面拆分成一个个小的功能块,再将所有功能块结合在一起,就可以完成大的功能。

二、vue组件化思想

它提供了一种抽象,让我们可以开发出一个个独立克服用的小组件来构造我们的应用、

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

在开发中尽可能的将页面拆分成一个个小的、可复用的组件,这样让我们的代码更加方便组织和管理,并且扩展性也更强。

三、注册组件的基本步骤

使用组件一般步骤:

1、创建组件构造器

调用Vue.extend()方法创建组件构造器

//1.创建组件构造器对象
      const cpnC = Vue.extend({
        template: `
        <div>
          <h2>我是标题</h2>
        </div>`,
      });

2、注册组件

调用Vue.component()方法注册组件

//注册组件 该方法参数为两个,前者是组件在使用时的标签名,后者是创建的组件构造器对象
      Vue.component("mycpn", cpnC);
      const app = new Vue({ //Vue的实例对象
        el: "#app",
        data: {
          meaasge: "nihao",
        },
      });

3、使用组件

在Vue实例的作用范围内使用组件

 <div id="app">
      <mycpn></mycpn>
 </div>
 将组件标签写在div外边没有用,无法被浏览器解析
四、全局组件和局部组件

全局组件:通过Vue.component()注册的组件,为全局组件,可以在多个Vue实例下使用

局部组件:去Vue的某个实例中注册组件即为局部组件,但只能在注册时使用的实例对象中使用

代码中注册的cpn组件只可在id为app的实例对象中使用
const app = new Vue({
        el: "#app",
        data: {
          meaasge: "nihao",
        },
        components: {
          //cpn为使用组件时的标签名
          cpn: cpnC,
        },
      });
五、父组件与子组件

子组件在父组件中以局部组件注册方式注册,父组件再在vue实例对象中进行注册。

子组件如果想要单独使用,则需要在vue实例中进行注册。

 //创建第一个组件(子组件)
      const cpnC1 = Vue.extend({
        template: `
        <div>
          <h1>我是标题1</h1>
        </div>`,
      });
​
      //创建第二个组件(父组件)
      const cpnC2 = Vue.extend({
        template: `
        <div>
          <h1>我是标题2</h1>
          <cpn1></cpn1>
        </div>`,
        components: {
          cpn1: cpnC1,
        },
      });
​
      // root组件
      const app = new Vue({
        el: "#app",
        data() {
          return {
            message: "nihao",
          };
        },
        components: {
          cpn2: cpnC2,
        },
      });
六、注册组件语法糖写法

Vue为了简化注册组件的过程,提供了注册的语法糖,主要是省去了调用Vue.extend()的步骤,而是可以在直接使用一个对象来代替。

1、注册全局组件

//全局组件注册的语法糖
       Vue.component("cpn1", {
         template: `
         <div>
           <h1>我是标题1</h1>
         </div>`,
       });
​

2、注册局部组件

const app = new Vue({
        el: "#app",
        data() {
          return {
            message: "nihao",
          };
        },
        //语法糖注册局部组件
        components: {
          cpn2: {
            template: `
              <div>
                <h1>我是标题2</h1>
              </div>`,
          },
        },
      });
七、组件模板抽离写法
    <!-- 1.通过script标签,注意类型 -->
    <script type="text/x-template" id="cpn">
      <div>
        <h2>我是标题1</h2>
      </div>
    </script>
    
    <!-- 通过template标签 -->
    <template id="cpn">
      <div>
        <h1>我是标题2</h1>
      </div>
    </template>
    
      Vue.component("cpn", {
        template: "#cpn",
      });
    

\