当前位置: 首页 > news >正文

vue源码分析(九)—— 合并配置

文章目录

  • 前言
    • 1.vue cli 创建一个基本的vue2 项目
    • 2.将mian.js文件改成如下
    • 3. 运行结果及其疑问?
  • 一、使用 `new Vue` 创建过程的 2 种场景
  • 二、margeOption的详细说明
    • 1.margeOption的方法地址
    • 2.合并策略的具体使用
    • 3.defaultStrat 默认策略方法
  • 三:以生命周期来查看合并策略
    • 1. 遍历所有的key执行方法
    • 2. LIFECYCLE_HOOKS的key值定义文件路径
    • 3. mergeLifecycleHook方法的简单概况
  • 四:子组件调用逻辑
    • 1. 回到new Vue初始化逻辑中,options的逻辑
    • 2. 合并options的逻辑
    • 3. initInternalComponent的作用
    • 4:子组件合并策略的总结


前言

为什么使用mixin中使用生命周期方法created,会重复执行两次?

1.vue cli 创建一个基本的vue2 项目

2.将mian.js文件改成如下

在这里插入图片描述

3. 运行结果及其疑问?

在这里插入图片描述


一、使用 new Vue 创建过程的 2 种场景

(1)一种是代码主动调用 new Vue(options) 的方式实例化一个 Vue 对象
(2)一种是组件过程中内部通过 new Vue(options) 实例化子组件。(先创建一个父节点占位符,然后再遍历所有子 VNode 递归调用 createElm,在遍历的过程中,如果遇到子 VNode 是一个组件的 VNode,则重复本节开始的过程,这样通过一个递归的方式就可以完整地构建了整个组件树。)

无论哪种方式,都需要调用一个方法margeOption,路径为src/core/instance/init.tss
在这里插入图片描述

二、margeOption的详细说明

1.margeOption的方法地址

在这里插入图片描述

2.合并策略的具体使用

在这里插入图片描述

3.defaultStrat 默认策略方法

这个方法很简单:没有子级,返回父级,有子级返回自己

const defaultStrat = function (parentVal: any, childVal: any): any {return childVal === undefined ? parentVal : childVal
}

在这里插入图片描述

三:以生命周期来查看合并策略

1. 遍历所有的key执行方法

在这里插入图片描述

2. LIFECYCLE_HOOKS的key值定义文件路径

其实就是生命周期的key的定义
在这里插入图片描述

3. mergeLifecycleHook方法的简单概况

在这里插入图片描述

四:子组件调用逻辑

1. 回到new Vue初始化逻辑中,options的逻辑

在这里插入图片描述

2. 合并options的逻辑

在这里插入图片描述

3. initInternalComponent的作用

== 就是简单的给当前的vm对象赋值,生成了一个新的$options==
在这里插入图片描述

4:子组件合并策略的总结

就是调用了init方法,然后调用initInternalComponent方法,将传入的子组件的值重新赋值,生成了一个新的options

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 打印机问题故障处理_十大打印机故障大全及处理方法
  • 大模型各版本Base, Chat, Instruction 之间的区别
  • Leetcode 3298. Count Substrings That Can Be Rearranged to Contain a String II
  • Pandas Series 概述与使用指南
  • [SDX35+WCN6856]SDX35 + WCN6856 默认增加打包wifi配置hostapd_24g.conf和hostapd_5g.conf操作方法
  • linux中vim编辑器的应用实例
  • Python画笔案例-058 绘制单击画酷炫彩盘
  • 第三篇 第16章 工程量清单计价
  • 大数据-144 Apache Kudu 基本概述 数据模型 使用场景
  • vitis2022.2生成动态设备树
  • Linux——应用层协议HTTP
  • 格力嵌入式面试题及参考答案
  • K8s 之微服务的定义及详细资源调用案例
  • Spring Boot管理用户数据
  • Golang面试题
  • 【个人向】《HTTP图解》阅后小结
  • 002-读书笔记-JavaScript高级程序设计 在HTML中使用JavaScript
  • DOM的那些事
  • emacs初体验
  • HTTP那些事
  • JS变量作用域
  • js操作时间(持续更新)
  • JS进阶 - JS 、JS-Web-API与DOM、BOM
  • laravel 用artisan创建自己的模板
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • TypeScript迭代器
  • Vue UI框架库开发介绍
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • 动态规划入门(以爬楼梯为例)
  • 缓存与缓冲
  • 讲清楚之javascript作用域
  • 我看到的前端
  • 一份游戏开发学习路线
  • 【干货分享】dos命令大全
  • const的用法,特别是用在函数前面与后面的区别
  • Hibernate主键生成策略及选择
  • Unity3D - 异步加载游戏场景与异步加载游戏资源进度条 ...
  • 宾利慕尚创始人典藏版国内首秀,2025年前实现全系车型电动化 | 2019上海车展 ...
  • ​configparser --- 配置文件解析器​
  • #调用传感器数据_Flink使用函数之监控传感器温度上升提醒
  • (11)MATLAB PCA+SVM 人脸识别
  • (9)目标检测_SSD的原理
  • (delphi11最新学习资料) Object Pascal 学习笔记---第5章第5节(delphi中的指针)
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (数位dp) 算法竞赛入门到进阶 书本题集
  • (四)opengl函数加载和错误处理
  • (已更新)关于Visual Studio 2019安装时VS installer无法下载文件,进度条为0,显示网络有问题的解决办法
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)平衡树
  • ./configure,make,make install的作用
  • .bat批处理(十):从路径字符串中截取盘符、文件名、后缀名等信息
  • .NET Core WebAPI中使用swagger版本控制,添加注释
  • .Net MVC4 上传大文件,并保存表单
  • .NET4.0并行计算技术基础(1)