探索学习 Vue 组件篇 第五篇 VueComponent 构造函数

探索学习 Vue 组件篇

Vue 官网: https://cn.vuejs.org/v2/guide/forms.html
尚硅谷Vue2.0+Vue3.0全套教程丨vuejs从入门到精通 https://www.bilibili.com/

第五篇 VueComponent 构造函数

  • 这一节主要是研究VueComponent,了解组件的本质是什么;

1. 案例页面

   <div id="root">
        <h1>你好,{{name}}</h1>
        <hr/>
        <school></school>
    </div>
  <script type="text/javascript">
     Vue.config.productionTip = false //设置为 false 以阻止 vue 在启动时生成生产提示
    // 定义组件
     const school = Vue.extend({
        template:`
            <div>
                <h2>学校名称:{{schoolName}}</h2>
                <h2>学校地址:{{schoolAddress}}</h2>
                <button @click='showName'>点我显示学校名</button>
            </div>
        `,
        data(){
            return {
                schoolName: '天津安锐捷大学',
                schoolAddress: '普天科技园'
            }
        },
        methods: {
            showName(){
                console.log("组件实例对象:",this)
            }
        },
     })
     console.log("school 本质:",school)
     const vm = new Vue({
        el: "#root",
        data: {
           name: "安锐捷",
        },
        // 注册school 组件
        components:{
            school:school
        }
      })
  </script>
  • 案例效果图
    在这里插入图片描述

2. 分析总结

2.1 school组件的本质
  • 1、通过案例示例效果图可以明确的看出school 本身就是一个函数,准确的来说,schoole 是一个构造函数,一个名为VueComponent 的构造函数 ,是在我们Vue.extend({.....}) 的时候Vue 帮我们构造出来的函数,并不是由我们程序员自己来定义的;
  • 2、创建school 组件完成后,当要使用school 组件时,我们只需要页面的合适位置写<school></school>或是<school/>就可以,,Vue解析时会帮我们创建school组件实例对象。即Vue 帮我们执行的: new VueComponent(options)
  • 源码如下
      	Vue.extend = function (extendOptions) {
      	        
      	    此处省略1W ……
      	    var Sub = function VueComponent (options) {
      	        this._init(options);
      	    };
      	    此处省略1W ……
      	    return Sub
      	    };
      	}
    
    过源码可以看出 每次只要构造组件,那么就会 重新返回一个新的VueComponent 实例,所以即使一页面注册了好多组件,他们之间也不是有直接的联系
  • 3、 特别注意的地方:每次调用 Vue.extend, 返回的都是一个全新的 VueComponent !!!
2.2. 关于this 指向:
  • 组件配置中:
    data 函数、methods 中的函数、watch中的函数、computed 中的函数,它们的this 均是【VueComponent实例对象】
    VueComponent 的实例对象,以后简称vc (也可称之为:组件实例对象)在这里插入图片描述

  • new Vue() 配置中:
    data 函数、methods 中的函数、watch中的函数、computed 中的函数,它们的this 均是【Vue实例对象】
    Vue 的实例对象,以后简称**vm **在这里插入图片描述

创作不易,欢迎 多多点赞,收藏 各节里面总结的还有不到位的欢迎指证
邮箱:pymxb1991@163.com
微信:py_mxb

盛年不重来,一日难再晨。及时当勉励,岁月不待人。——晋.陶渊明《杂诗》

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值