百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 编程字典 > 正文

vue3框架设计精髓之Github很火的项目vue-design,学vue必须关注

toyiye 2024-07-05 01:25 17 浏览 0 评论

简介

熟悉vue的人估计都在关注的个项目,这个项目最开始是围绕vuejs源码分析,做到一定程度决定不再维护源码详解,而转向设计思想布道,vuejs源码分析就转到elegant branch下,主分支(master)专注讲渲染器(render),专注围绕vue3框架设计精髓,只为一个目标: 源码会一直迭代,但你只需要掌握核心设计原则。github star 4.1K+, 我估计等vue3真正发布的时候,这个项目Github star 一定可以到14K+, MIT协议。

阅读感悟

从Jquery时代如何render一个组件DOM讲起,进而提到Virtual DOM, 再由Virtual DOM扩展到怎么创建Virtual DOM,Virtual DOM怎么绑定数据和属性,挂载原理(有状态组件挂载与函数式组件挂载),怎么更新Virtual DOM直至更新DOM(patch),怎么优化性能(Diff 算法原理),写的十分详细,也容易理解,希望大家都去阅读,尤其是想深入了解vuejs的框架的。感谢github项目作者HcySunYang,通过学习,让我更加深入了解了vuejs, 必须有空就来阅读一遍,加深理解。Virtual DOM文章用VNode代替,个人更喜欢Virtual DOM,所以VNode 也就是Virtual DOM。

vue3框架设计精髓(渲染器)目录大纲

  • 一、组件的本质
  1. 组件的产出是什么
  2. 组件的 VNode 如何表示
  3. 组件的种类
  • 二、先设计 VNode 吧
  1. 用 VNode 描述真实 DOM
  2. 用 VNode 描述抽象内容
  3. VNode 的种类
  4. 使用 flags 作为 VNode 的标识
  5. 枚举值 VNodeFlags
  6. chidlren 和 ChildrenFlags
  7. VNodeData
  • 三、辅助创建 VNode 的 h 函数
  1. 在 VNode 创建时确定其类型 - flags
  2. 在 VNode 创建时确定其chidlren的类型
  3. 使用 h 函数创建 VNode
  • 四、渲染器之挂载
  1. 责任重大的渲染器
  2. 挂载普通标签元素
  • 2.1、基本原理
  • 2.2、class的处理
  • 2.3、Attributes 和 DOM Properties
  • 2.4、事件的处理
  1. 挂载纯文本、Fragment 和 Portal
  • 3.1、挂载文本节点
  • 3.2、挂载 Fragment
  • 3.3、挂载 Portal
  1. 有状态组件的挂载和原理
  2. 函数式组件的挂载和原理
  • 五、渲染器之patch
  1. 基本原则
  2. 替换 VNode
  3. 更新标签元素
  • 3.1、更新标签元素的基本原则
  • 3.2、更新 VNodeData
  • 3.3、更新子节点
  1. 更新文本节点
  2. 更新 Fragment
  3. 更新 Portal
  4. 有状态组件的更新
  • 7.1、主动更新
  • 7.2、初步了解组件的外部状态 props
  • 7.3、被动更新
  • 7.4、我们需要 shouldUpdateComponent
  1. 函数式组件的更新
  • 六、渲染器的核心 Diff 算法
  1. 核心 Diff 算法的发展史
  2. React 的核心 Diff 算法原理
  3. Vue2 的核心 Diff 算法原理
  4. Vue3 所采用的核心 Diff 算法及原理
  • 4.1、相同的前置和后置元素
  • 4.2、移动次数总是最少的
  • 4.3、最长递增子序列
  • 七、自定义渲染器
  1. 自定义渲染器的原理
  2. 自定义渲染器的应用

相关推荐

CryptoChat:一款功能强大的纯Python消息加密安全传输工具

关于CryptoChatCryptoChat是一款功能强大的纯Python消息加密安全传输工具,该工具专为安全研究专家、渗透测试人员和红蓝队专家设计,该工具可以完全保证数据传输中的隐私安全。该工具建立...

为什么都说Python简单,但我觉得难?

Python普遍被大家认为是编程语言中比较简单的一种,但有一位电子信息的学生说自己已经学了C语言,但仍然觉得Python挺难的,感觉有很多疑问,像迭代器、装饰器什么的……所以他提出疑问:Python真...

蓝牙电话-关联FreeSwitch中继SIP账号通过Rest接口

蓝牙电话-关联FreeSwitch中继SIP账号通过Rest接口前言上一篇章《蓝牙电话-与FreeSwitch服务器和UA坐席的通话.docx》中,我们使用开源的B2B-UA当中经典的FreeSWIT...

技术分享|Sip与WebRTC互通-SRProxy开源库讲解

SRProxy介绍目前WebRTC协议跟SIP协议互通场景主要运用在企业呼叫中心、企业内部通信、电话会议(PSTN)、智能门禁等场景,要想让WebRTC与SIP互通,要解决两个层面的...

全网第N篇SIP协议之GB28181注册 JAVA版本

鉴于网上大部分关于SIP注册服务器编写都是C/C++/python,故开此贴,JAVA实现也贴出分享GB28181定义了了基于SIP架构的视频监控互联规范,而对于多数私有协议实现的监控系统...

「linux专栏」top命令用法详解,再也不怕看不懂top了

在linux系统中,我们经常使用到的一个命令就是top,它主要是用来显示系统运行中所有的进程和进程对应资源的使用等信息,所有的用户都可以使用top命令。top命令内容量丰富,可令使用者头疼的是无法全部...

Linux 中借助 perf 对 php 程序模拟CPU高的案例分析

导语本文是一篇Linux借助工具分析CPU高的优化案例,没有任何干货内容,很详细的展示了优化CPU高的具体步骤,非常适合初中级读者阅读!...

centos漏洞处理方法(centos podman)

centos服务器最近有诸多漏洞,修复命令及对应的漏洞整理后,分享给大家RHSA-2020:1176-低危:avahi安全更新yumupdateavahi-libsRHSA-2017:326...

Linux上的free命令详解(Buffer和Cache)

解释一下Linux上free命令的输出。下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(FreeOutput)。例如:FO[2][1]...

linux 命令行之你真的会用吗?--free 基本用法篇

free命令行统计内存使用率及swap交换分区的使用率数据。是由sourceforge负责维护的,在ubuntu上其包名为procps,这个源码包中,除了free还有ps,top,vmstat,ki...

kong api gateway 初体验(konga github)

kongapigateway初体验(firstsight?)。Kong是一个可扩展的开源API层(也称为API网关或API中间件)。Kong运行在任何RESTfulAPI的前面,并通过插件...

在Ubuntu下开启IP转发的方法(ubuntu20 ip)

IP地址分为公有ip地址和私有ip地址,PublicAddress是由INIC(internetnetworkinformationcenter)负责的,这些IP地址分配给了注册并向INIC提...

基于 Kubernetes 的 Serverless PaaS 稳定性建设万字总结

作者:许成铭(竞霄)数字经济的今天,云计算俨然已经作为基础设施融入到人们的日常生活中,稳定性作为云产品的基本要求,研发人员的技术底线,其不仅仅是文档里承诺的几个九的SLA数字,更是与客户切身利益乃...

跟老韩学Ubuntu Linux系列-sysctl 帮助文档

sysctl一般用于基于内核级别的系统调优,man帮助手册如下。...

如何在 Linux/Unix/Windows 中发现隐藏的进程和端口

unhide是一个小巧的网络取证工具,能够发现那些借助rootkit、LKM及其它技术隐藏的进程和TCP/UDP端口。这个工具在Linux、UNIX类、MS-Windows等操作系统下都...

取消回复欢迎 发表评论:

请填写验证码