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

Vue源码总结

1,根据vue工程package.json配置文件查看scripts命令,找到build命令执行的js文件

2,根据构建执行的js文件继续跟进,找到主入口文件

3,从主入口文件直接分析主干代码,追踪export的Vue对象

4,跟进到最内层,发现Vue对象其实就是一个构造函数,构造函数内调用了_init()方法。因此在我们new Vue(options)的时候,实例化Vue执行就会调用此方法

5,在vue加载完成之后,初始化了initMixin, stateMixin, eventsMixin, lifecycleMixin, renderMixin这5个方法

6,initMixin中定义了_init函数,这个函数的核心流程是:

合并options配置挂载到vm.$options;

调用initLifecycle初始化vm.$parent, vm.$root, vm.$children, vm.$refs 等属性值;

调用initEvents初始化事件系统,实际上是v-on和@的注册的事件;

调用initRender初始化渲染,通过执行createElement函数执行并返回虚拟DOM;

调用beforeCreate钩子;

调用initInjections函数初始化父子组件的inject和provide(二者成对出现);

调用initState初始化state, props, methods, computed, watch等,将data, props都挂载到vm._data, vm._props上,设置访问数据代理,访问this.xx就是访问vm.xx;

调用initProvide函数,同initInjections;

调用created钩子。

7,stateMixin中,对_data(vm.$data), _props(vm.$props)使用 Object.defineProperty 添加响应式

8,eventsMixin中,在Vue原型上定义$on, $once, $off, $emit 事件方法,并返回vm

9,lifecycleMixin中,在Vue原型上定义 _update, $forceUpdate, $destroy方法

10,renderMixin中,在Vue原型上定义$nextTick方法和_render方法(该方法会调用vm.$createElement创建虚拟DOM)

相关文章:

Vue源码总结

1,根据vue工程package.json配置文件查看scripts命令,找到build命令执行的js文件 2,根据构建执行的js文件继续跟进,找到主入口文件 3,从主入口文件直接分析主干代码,追踪export的Vue对象 4,跟…...

记一次调试微信订阅消息的坑

微信发送订阅消息文档 发送订阅消息 | 微信开放文档 按照文档说明的,一直报data param错误,编码47001,从程序中把请求参数扣出来,放到微信提供的工具里面调试 微信调试工具 然后报data参数要用string,转化为string…...

ASP.NET Core3.1 API 创建(Swagger配置、数据库连接Sql Server)、开发、部署

文章目录 创建项目点击Nuget安装包删除原有controllers编辑新建controll、添加注释Startup 注册Swagger服务使用swagger中间件配置XML注释更改启动端口 launchsettings.json在startup.cs跨域处理运行 数据库设计与连接安装库新建类继承框架根据数据库表设计对应设计类在DataCon…...

大数据之LibrA数据库常见术语(八)

SCTP Stream Control Transmission Protocol,流控制传输协议。是IETF于2000年新定义的一个传输层协议。是提供基于不可靠传输业务的协议之上的可靠的数据报传输协议。SCTP的设计用于通过IP网传输SCN窄带信令消息。 Session 数据库系统在接收到应用程序的连接请求时…...

【实战】Kubernetes安装持久化工具NFS-StorageClass

文章目录 前言技术积累存储类(storage class)什么是NFS什么是PV\PVC为什么要用NFS-StorageClass 安装NFS-StorageClass保证K8S集群正常投用安装NFS工具与客户端NFS安装常见错误安装NFS-StorageClass存储器 前言 前面的博文我们介绍了如何用kuberadmin的…...

透明安全地解释Moonbeam基金会分配的GLMR去了哪

在GLMR分配比例中,约有16.7%的GLMR分配给了生态支持。这部分GLMR究竟用在了哪里,Moonbeam生态是否还有足够的GLMR扶持生态项目? Moonbeam基金会每隔半年会发布一份GLMR透明度报告,最近的报告日期为2023年7月31日。其中列出了社区…...

python安装包失败 安装scipy包

最近在配深度学习环境,安装好了conda、CUDA、cuDNN,运行之后报错,没有scipy包。 试了很多方法: 用命令行pip、conda install 在pycharm下载包 在环境中添加包 都失败了 要么直接ERROR,要么超时 问了师兄 需要在conda环…...

解决javascript报错:SyntaxError: Invalid Unicode escape sequence

在处理cookie时报这个错: 网上搜了一圈都说是反斜杠问题,要把\替换成/ 但是试了网上的replace替换: replace(/\\/g, /) 结果没有用!!! 然后我干脆直接做了一个最简单字符串赋值,再打印出来。…...

【Python第三方包】使用Python的Translate包进行文本翻译

文章目录 前言一、Translator类的初始化参数二、translate函数三、翻译示例代码1.1 示例代码11.2 示例代码2总结前言 在现代互联网时代,跨语言翻译已经成为了不可或缺的工具。不仅对于个人,对于企业和开发者来说,实现文本翻译在国际化、多语言支持以及内容本地化方面都具有…...

【OpenCV实现图像阈值处理】

文章目录 概要简单阈值调整自适应阈值调整大津(Otsus)阈值法Otsus 二值化是如何工作的 概要 OpenCV库中的图像处理技术,主要分为几何变换、图像阈值调整和平滑处理三个部分。 在几何变换方面,OpenCV提供了cv.warpAffine和cv.warpPerspective函数&#…...

【Python机器学习】零基础掌握StackingRegressor集成学习

如何更准确地预测糖尿病患者的血糖水平? 糖尿病是一种影响全球数百万人的慢性疾病。有效地管理和预测血糖水平是糖尿病患者日常生活的重要一环。单一的预测模型(比如线性回归、支持向量机等)虽然有一定的效果,但在处理复杂的医疗数据时,其准确性可能会受到限制。 为了准…...

JVM(Java Virtual Machine)G1收集器篇

前言 本文参考《深入理解Java虚拟机》,本文主要介绍G1收集器的收集思想和具体过程(填上一篇文章留下的坑) 本系列其他文章链接: JVM(Java Virtual Machine)内存模型篇 JVM(Java Virtual Machi…...

微信小程序设计之主体文件app-json-tabBar

一、新建一个项目 首先,下载微信小程序开发工具,具体下载方式可以参考文章《微信小程序开发者工具下载》。 然后,注册小程序账号,具体注册方法,可以参考文章《微信小程序个人账号申请和配置详细教程》。 在得到了测…...

GZ035 5G组网与运维赛题第2套

2023年全国职业院校技能大赛 GZ035 5G组网与运维赛项(高职组) 赛题第2套 一、竞赛须知 1.竞赛内容分布 竞赛模块1--5G公共网络规划部署与开通(35分) 子任务1:5G公共网络部署与调试(15分) 子任务2:5G室内与室外站点建设(20分) 竞赛模块2--5G公共网络运维与优化(…...

如何训练Embedding Model

BGE的技术亮点: 高效预训练和大规模文本微调;在两个大规模语料集上采用了RetroMAE预训练算法,进一步增强了模型的语义表征能力;通过负采样和难负样例挖掘,增强了语义向量的判别力;借鉴Instruction Tuning的…...

springboot配置redis、Spring cache

1.Jedis库 依赖库 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>5.0.2</version> </dependency>使用案例&#xff1a; Testpublic void jedis(){Jedis jedis new Jedis("127…...

悟空crm安装搭建 报错[0] RedisException in Redis.php line 56问题处理办法

相信很多朋友进行安装悟空crm的时候 提示错误&#xff1a; [0] RedisException in Redis.php line 56 Connection refused 不知道怎么样处理是吧~~~ $this->options array_merge($this->options, $options);}# redis 密码$password config(cache.password);if (!empty…...

Ubuntu22.04 交叉编译阿里oss c-sdk

一、交叉编译openssl Ubuntu20.04 交叉编译openssl 1.0.1f_编译前去除 makefile 中所有的"-m64"字段_qq76211822的博客-CSDN博客文章浏览阅读319次。Ubuntu20.04 交叉编译openssl_编译前去除 makefile 中所有的"-m64"字段https://blog.csdn.net/sz7621182…...

arch linux 安装 vsftpd 配置虚拟用户

后面操作会直接基于 yay 操作 自行查找如何安装 yay 公司经常会用到 ftp 服务 不想用 apache 的 ftp server 所以自己在小机器上撞了 arch linux 用来安装软件 跑程序等。 1. 安装 vsftpd yay vsftpd --noconfirm选择 1 安装 输入密码 2. 安装 pam_pwdfile 安装 pam_pwdf…...

Django的查询所有,根据用户名查询,增加用户操作

1.路由 from meiduo_admin.user.user_views import UsersViewurlpatterns [# 用户操作路由path(users/, UsersView.as_view()), ]2. 序列化器 from rest_framework import serializersfrom meiduo_admin.models import Userclass UsersSerialize(serializers.ModelSerialize…...

【Axure高保真原型】引导弹窗

今天和大家中分享引导弹窗的原型模板&#xff0c;载入页面后&#xff0c;会显示引导弹窗&#xff0c;适用于引导用户使用页面&#xff0c;点击完成后&#xff0c;会显示下一个引导弹窗&#xff0c;直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

边缘计算医疗风险自查APP开发方案

核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

【Java_EE】Spring MVC

目录 Spring Web MVC ​编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 ​编辑参数重命名 RequestParam ​编辑​编辑传递集合 RequestParam 传递JSON数据 ​编辑RequestBody ​…...

【python异步多线程】异步多线程爬虫代码示例

claude生成的python多线程、异步代码示例&#xff0c;模拟20个网页的爬取&#xff0c;每个网页假设要0.5-2秒完成。 代码 Python多线程爬虫教程 核心概念 多线程&#xff1a;允许程序同时执行多个任务&#xff0c;提高IO密集型任务&#xff08;如网络请求&#xff09;的效率…...

.Net Framework 4/C# 关键字(非常用,持续更新...)

一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

【笔记】WSL 中 Rust 安装与测试完整记录

#工作记录 WSL 中 Rust 安装与测试完整记录 1. 运行环境 系统&#xff1a;Ubuntu 24.04 LTS (WSL2)架构&#xff1a;x86_64 (GNU/Linux)Rust 版本&#xff1a;rustc 1.87.0 (2025-05-09)Cargo 版本&#xff1a;cargo 1.87.0 (2025-05-06) 2. 安装 Rust 2.1 使用 Rust 官方安…...