Vue组件化之VueComponent介绍

简介

这篇文章主要介绍的是VueComponent函数。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>VueComponent</title>
</head>
<body>

    <div id="root">
        <school></school>
    </div>
    
    <script src="./js/vue.js"></script>
    <script>
        Vue.config.productionTip = false;

        const school = Vue.extend({
            template:`
            <div>
           <div>学校:{{schoolName}}</div>
           <div>地址:{{schoolAddress}}</div>
           </div>
           `,

           data() {
               return {
                schoolName:"尚硅谷",
                schoolAddress:"北京"
               }
           },
        })

        const school1 = Vue.extend({
            template:`
            <div>
           <div>学校:{{schoolName}}</div>
           <div>地址:{{schoolAddress}}</div>
           </div>
           `,

           data() {
               return {
                schoolName:"尚硅谷",
                schoolAddress:"北京"
               }
           },
        })

        //输出school组件
        console.log(school);
        console.log(school === school1);

        new Vue({
            el:"#root",
            components:{
                school
            }
        })
    </script>
</body>
</html>

效果:
Y5by655qE,size_17,color_FFFFFF,t_70,g_se,x_16)

第一个结论:
组件的本质是一个名为VueComponent的构造函数,并且不是程序员定义的,而是Vue.extend函数生成的。

并且每次生成的都是不一样的VueComponent的构造函数。

第二个结论:
每当我们使用主键(写组件标签时,<school></school>),vue解析到组件标签时,会帮我们使用VueComponent构造函数创建一个VueComponent对象,帮我们执行 new VueComponent(options)

验证:
修改vue.js文件的源码,找到这一段,加上一段代码:
在这里插入图片描述
效果:
在这里插入图片描述

第三个结论:this的指向:
在组件配置中:
data函数,methods中配置的函数,watch中配置的函数,computed中配置的函数的this指向的都是VueComponent组件对象。
在vue实例配置中:
data函数,methods中配置的函数,watch中配置的函数,computed中配置的函数的this指向的都是vue对象。

在这里插入图片描述
效果:
在这里插入图片描述

Vue实例对象简称vm,VueComponent实例对象简称vc。

一个重要的内置关系:
VueComponent.prototype.__proto__===Vue.prototype ,这么做是为了让组件实例对象vc可以访问到Vue原型上的属性方法,已达到复用,因为Vue和VueComponent在很大程度上都是相同的(95%),所以像$mount和$watch方法,定义在Vue的原型对象上,然后VueComponent的原型对象的原型对象指向Vue的原型对象,VueComponent和Vue的实例就可以使用同一份方法和属性,而不用写两份一样的。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>一个重要的内置对象</title>
</head>
<body>
    

    <script src="./js/vue.js"></script>
    <script>
        Vue.config.productionTip = false;

        const school = Vue.extend({
           template:`
           <div>
           <div>学校:{{schoolName}}</div>
           <div>地址:{{schoolAddress}}</div>
           </div>
           `,
           data() {
               return {
                schoolName:"尚硅谷",
                schoolAddress:"北京"
               }
           },
        })

        console.log(school.prototype.__proto__ === Vue.prototype);
    </script>

</body>
</html>

效果:
在这里插入图片描述
在这里插入图片描述

文字解说就是VueComponent的原型对象的原型对象 === Vue的原型对象。

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue组件开发规范是基于Web Components的思想而来的。在Vue中,组件开发可以帮助我们更好地组织和重用代码。 Vue组件注册有两种方式:全局组件注册和局部组件注册。 全局组件注册语法是通过Vue.component(组件名称, {data:组件数据, template:组件模板内容})来实现的。这样注册的组件可以在整个应用程序中被使用。 局部组件注册可以在一个父组件中注册子组件,只在父组件的作用域内可见。这样可以避免组件之间的命名冲突。 在组件开发中,我们希望尽可能多地重用代码,并且避免组件之间的冲突。因此,编写自定义组件的方式并不容易,需要考虑到HTML、CSS和JS的各个方面。 总结起来,Vue组件开发规范遵循了Web Components的思想,通过全局组件注册和局部组件注册来实现组件的重用和代码的组织。这样可以提高代码的可维护性和可复用性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [Vue系列之组件](https://blog.csdn.net/weixin_62277266/article/details/128213687)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值