探索学习 Vue 组件篇 第六篇 一个重要的内置关系(重要)

探索学习 Vue 组件篇

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

第六篇 一个重要的内置关系(重要)

  • 这一节以原型对象引出问题,然后分析Vue与VueComponent的关系

1、知识点

  • 这一小节主要是说一下显式原型属性,隐式原型属性,原型对象,最终目的是:创建一个对象可以明确实例对象的缔造者究竟是谁
1.1. 定义一个构造函数,并创建实例对象
  function Demo(){
          this.a = 1
          this.b = 2
     }
 const d = new Demo();      // d 为Demo 的实例对象
1.2. 认识 函数的prototype 属性 和 对象的 __proto__属性
  • 只要是一个函数,那么肯定身上会有一个prototype属性
           console.log("Demo函数的原型属性:",Demo.prototype);   //函数身上 显式原型属性
           console.log("Demo函数构造出来的d实例对象:",d.__proto__);   //实例对象 隐式原型属性           
    
    在这里插入图片描述
  • 无论是 函数 身上的 显式原型属性 Demo.prototype,还是 实例 身上的 隐式原型属性 d.__proto__ 他们统统都指向了一个对象,那就是 原型对象
    在这里插入图片描述
  • 程序员通过显式原型属性,触碰到原型对象, 通过操作原型对象,为其追加一个x 属性, 值 为99
       Demo.prototype.x = 99;
    
    1. 当程序员通过Demo.prototype.x = 99 给原型对象追加属性的同时,
    2. 程序执行的过程中 会通过 d.__proto__ 去寻找原型对象上的相应的属性
      如下图流程图在这里插入图片描述
    • 通过隐式原型属性显示对象
          console.log('实例对象:隐式原型属性:',d.__proto__.x);
      
    • 显式属性对象 === 隐式属性对象
          console.log("确认显式属性对象 === 隐式属性对象 : ",Demo.prototype === d.__proto__ );
      
    • 如下图两者比较
      在这里插入图片描述
1.3. _实例对象缔造者
   console.log('实例对象d:',d);     
   function Person(){}
   function Dog(){}
   const person = new Person();
   const dog = new Dog();
   console.log(person);
   console.log(dog);
  • 我们且来先观察一下实例对象d ,然后再来观察person dog 想像一下,如果没有实例对象的缔造者,将会是什么样子的后果;
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

2、Vue中的内置关系

  • 内置的关系到底是啥呢,一行代码就能把内置关系说明白
  • 就是这行代码 VueComponent.prototype.____proto__ === Vue.prototype
  • 上代码,观察F12打印结果
// 定义组件
  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)

   console.log("=======school.prototype.__proto__ === Vue.prototype========",school.prototype.__proto__ === Vue.prototype);
   const vm = new Vue({
      el: "#root",
      data: {
         name: "安锐捷",
      },
    })
  • 示例代码效果图
    在这里插入图片描述
    验证完毕 内置的关系其实就是下面这段代码
    VueComponent.prototype.____proto__ === Vue.prototype

3、Vue中的内置关系详解

  • 下面以一些图例来详细的分析VueVueComponent 的关系
3.1.Vue 构造函数,原型对象
  • Vue 构造函数,原型对象
    在这里插入图片描述
    在这里插入图片描述
    • Vue 构造函数 身上有很多属性(config、component……),
      • 其中最重要的一个属性叫prototype; prototype的值呢?他是一个显式原型属性,
      • 还有一个属性叫__proto__ ,他是一个隐式原型属性
      • 无论是函数身上的显式原型属性,还是实例身上的隐式原型属性 他们统统都指向了一个对象,那就是原型对象
    • Vue 原型对象 身上也有很多我们用过的属性 $mount $watch 等等
      在这里插入图片描述
3.2. new Vue({...})
  • Vue 的原型对象上的所有属性和方法,Vue 实例对象都可以使用
    • const vm = new Vue({…… })
    • vm 是一个实例对象,那么他身上肯定会有隐式原型属性__proto__,那么也就是说, 他也会指向自己的原型对象,也就是 Vue 的原型对象
    • 需要注意的是,函数身上才会有prototype 对象身上只会有__proto__
      如下以图例形式直观 的展示vm Vue Vue原型对象间的关系-
3.3. Vue 的原型对象 Object 原型对象
  • Vue 的原型对象,他也是一个对象,他就是一个普普通通的Object 对象, 所以说Vue 身上也会有一个隐式原型属性 __proto__ 同时他会指向自己的原型对象 那就是Object 原型对象

    • 核心:实例的隐式原型属性,永远指向自己缔造者的原型对象
    • Vue 的实例对象vm缔造者是Vue 所以沿着隐式原型链 __proto__ 寻找,那就找到了自己的原型对象Vue 原型对象
    • Vue 的原型对象缔造者是Object 所以沿着隐式原型链 __proto__ 寻找,那就找到了自己的原型对象Object 原型对象
    • Object 继续沿着自己的隐式原型属性 __proto__ 找,那就是 是隐式原型链的尽头 null
      如下以图例形式直观 的展示vm Vue Vue原型对象 object的原型对象间的关系在这里插入图片描述
3.4. VueComponent 构造函数
  • VueComponent 他身上也有很多属性,
    • 需要注意的是,他是一个构造函数,所以说他身上肯定会有一个prototype 属性 同理,他肯定也会指向自己的原型对象 VueComponent原型对象
    • 如下以图例形式直观 的展示VueCompoente 与VueComponent原型对象间的关系
      在这里插入图片描述
  • 当要使用组件的时候,编写组件标签,例如<school></school>
    • 使用<school> 组件的时候,Vue肯定会帮我们new VueComponent 对象 我们且叫VueComponent实例对象为vc
    • VueComponent实例对象名叫vc 他也是一个对象,那么他身上也会有隐式原型属性__proto__ 同时他会指向自己缔造者的原型对象 那就是VueComponent 原型对象
    •    如下以图例形式直观 的展示**VueCompoente 与VueComponent原型对象**间的关系
      
    在这里插入图片描述
3.5. VueComponent原型对象的指向
  • VueComponent原型对象也是对象,并且是一个object 的原型对象

    • 正常来说 由于VueComponent 隐式原型属性是 __proto__,那么接下来,__proto__应该沿着隐式原型链寻找 自己Object 的原型对象 ,但其实并不是如此,我们先看如下图关系
      在这里插入图片描述
  • 其实Vue并没有让 VueComponent 隐式原型属性 __proto__,这条线指向 Object 而是让VueComponent的原型对象的隐式原型属性 __proto__,指向了Vue 的原型对象
    在这里插入图片描述

    • VueComponent.prototype.____proto__ 指向了 Vue的原型对象

    • 当出现上面这样的指向的时候,也就有了这行代码 VueComponent.prototype.____proto__ === Vue.prototype

    • 为什么要这么搞尼????

    • 在这里插入图片描述

    • 我们想这么一个问题,首先我们在Vue 原型对象上放一个属性 X=99

    • 那么VueComponent实例对象vc在找属性的时候,

    • 首先在自己身上_data上找,发现自己身上没有,

    • 于是就沿着隐式原型属性 __proto__ 自己缔造者的原型对象的身上去找 ,发现也没有找到,

    • 则继续进行查找沿着隐式原型属性 __proto__ 自己缔造者的原型对象的身上去找,于是找就到了Vue 原型对象 ,就找到了
      -

3.6. 终级目的
  • 这么多的步骤,其实最终的目的也就是:让组件实例对象(vc)可以访问到Vue 原型上的属性、方法

在这里插入图片描述

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

有志者事竟成,破釜沉舟,百二秦关终属楚;
苦心人天不负,卧薪尝胆,三千越甲可吞吴。

在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 使用Vue框架编写可视化项目可以按照以下步骤进行: 1. 确定项目需求和功能:确定可视化项目所需实现的功能和展示效果。 2. 选择数据可视化库:根据项目需求选择合适的数据可视化库,如ECharts、D3.js等。 3. 构建Vue项目:使用Vue-CLI构建一个Vue项目。 4. 安装数据可视化库:使用npm或yarn安装选择的数据可视化库。 5. 创建组件:创建组件来展示可视化数据,使用Vue生命周期方法和钩子函数处理数据。 6. 样式设计:设计组件样式和交互效果,使用CSS、Sass等技术。 7. 调试和测试:使用Vue开发工具和浏览器开发者工具进行调试和测试。 8. 部署和发布:将Vue项目打包并部署到服务器上进行发布。 以上是编写Vue可视化项目的一般步骤,具体实现根据项目需求和数据可视化库的不同而异。 ### 回答2: 使用Vue框架编写可视化项目相对简单且高效。首先,我们可以选择合适的Vue可视化库,如Echarts或D3.js来实现图表的绘制和交互。 在项目的开始,我们首先建立一个Vue实例作为整个应用的基础。通过Vue的指令和数据绑定,我们可以轻松地实现组件的展示和用户的交互。例如,我们可以使用v-for指令循环渲染数据列表,并使用v-bind将数据绑定到DOM元素上。这样,我们就可以动态地显示数据,并通过用户的交互改变数据的状态。 在可视化项目中,数据的处理和呈现至关重要。我们可以使用Vue组件的特性将复杂的可视化逻辑分解为多个组件,提高项目的可维护性和重用性。通过组件间的通信机制,我们可以将数据和事件在各个组件之间进行传递和响应。例如,我们可以在父组件中请求数据,并将数据传递给子组件进行图表的绘制和展示。 在项目的构建过程中,我们可以使用Vue的路由功能将项目分为多个页面,实现不同页面间的切换和跳转。同时,我们可以使用Vue的状态管理库(如Vuex)来集中管理和控制应用的状态,方便数据的共享和更新。 最后,在项目的部署阶段,我们可以使用Vue的打包工具(如Webpack)将项目打包成静态文件,并通过服务器部署在云端或本地。这样,我们就能够通过浏览器访问我们的可视化项目,实现数据的动态展示和交互。 总而言之,使用Vue框架编写可视化项目能够让我们快速搭建并管理项目的结构和逻辑,实现数据的可视化展示和用户的交互体验。同时,Vue的灵活性和丰富的生态系统也为我们开发出更加复杂和高效的可视化项目提供了良好的基础。 ### 回答3: Vue是一个非常流行的JavaScript框架,用于构建用户界面。它具有响应式数据绑定和组件化的特点,使得开发者可以更加高效地构建可视化项目。下面我将简要介绍如何使用Vue框架来编写一个可视化项目。 首先,我们需要安装Vue框架。可以通过npm或yarn命令来进行安装。安装完成后,我们可以使用Vue命令行工具来创建一个新的Vue项目。 创建Vue项目后,我们可以使用Vue的核心功能来实现可视化功能。Vue提供了一些内指令,如v-bind用于绑定数据,v-if和v-for用于控制渲染逻辑等。我们可以利用这些指令来动态渲染数据,并将其可视化展示出来。 在可视化项目中,数据通常是关键的。我们可以使用Vue的数据管理工具Vuex来管理数据和状态。Vuex提供了一种集中式存储管理解决方案,可以让我们更好地管理和共享状态。 除了核心功能和数据管理,Vue还提供了丰富的第三方库和插件来增强可视化项目的功能。比如,我们可以使用echarts或d3等图表库来实现数据可视化,使用Element UI或Vuetify等UI库来美化用户界面。 在编写可视化项目时,我们可以借助Vue的生命周期钩子函数来实现一些特定的逻辑。比如,created钩子函数在组件实例被创建后立即调用,我们可以在这里进行初始化数据等操作。 最后,在实现可视化项目时,我们需要考虑一些性能优化和最佳实践。Vue提供了一些优化技巧,如异步组件、虚拟DOM和缓存等,可以帮助我们提升项目的性能。 总结一下,使用Vue框架编写一个可视化项目可以让我们更加高效地构建用户界面,并提供了丰富的功能和插件来增强项目的表现力。同时,我们可以利用Vue的数据管理工具Vuex来管理和共享状态。在实现项目时,我们需要考虑一些性能优化和最佳实践。希望上述回答能帮到您。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值