- 博客(18)
- 收藏
- 关注
原创 React源码解读(五)React中的时间切片技术
React 的时间切片机制没有一个固定的默认时间片长度,而是会根据浏览器的支持情况、设备性能和运行时的实际情况动态调整。这样做的目的是在保证页面响应性能的前提下,尽可能高效地完成渲染和更新任务。
2025-02-10 15:30:07
810
原创 React源码解读(四)Reconciliation过程中的微任务处理方式
在 React 里,微任务的处理至关重要,它保障了更新和渲染操作能够高效、有序地开展。
2025-02-10 15:18:25
409
原创 React源码解读(三)React调度过程
这个文件的核心功能是管理 React 应用中多个根节点(FiberRoot)的调度任务,确保各个根节点的更新工作能按照一定的优先级和规则进行处理。跟踪哪些根节点有待处理的工作。安排微任务来处理根节点的调度任务。处理同步工作的刷新,确保高优先级的任务能及时得到执行。当一个根节点收到更新时,函数会将其添加到调度列表中,并安排一个微任务来处理调度任务。微任务会调用函数,该函数会遍历所有调度中的根节点,为每个根节点安排具体的任务。最后,会调用函数刷新同步工作,确保高优先级的任务能及时得到执行。
2025-02-10 14:57:33
1757
原创 React源码解读(二) Fiber遍历性能优化策略
在 React 里对 Fiber 树进行遍历确实可能会消耗一定的时间,不过 React 采用了多种策略来优化这个过程,尽量减少性能损耗。
2025-02-10 14:49:52
383
原创 React源码解读(一)Scheduler.js
isQueued?: boolean,id:任务的唯一标识符,通过递增生成,用于维护任务的插入顺序。callback:任务要执行的回调函数,可能为null,表示任务已被取消。:任务的优先级,如等。startTime:任务的开始时间。:任务的过期时间,用于判断任务是否超时。sortIndex:任务在队列中的排序索引,用于在堆中排序。isQueued:可选属性,用于标记任务是否已入队,在性能分析时使用。是在是一个联合类型,它的值可以是01234或5。NoPriority。
2025-02-08 15:29:32
853
原创 PostScript Type 1、TrueType 和 OpenType 在文件结构上的差异
PostScript Type 1 字体文件一般由两部分构成:二进制的 PFB(Printer Font Binary)文件和 ASCII 文本的 PFM(Printer Font Metrics)文件,也可以将二者整合在一个 PFA(Printer Font ASCII)文件中。OpenType 是一种更灵活和强大的字体格式,它既可以基于 TrueType 轮廓(.ttf),也可以基于 PostScript 轮廓(.otf),其文件结构同样以表为基础。
2025-02-07 10:32:53
917
原创 pdf reference 1.7 翻译5 第三章 语法
本章涵盖了PDF在对象、文件和文档层面的所有语法知识。它为后续章节奠定了基础,后续章节将介绍如何把PDF文件的内容解释为页面描述、交互式导航辅助工具以及应用程序级别的逻辑结构。此外,本章还介绍了一些由基本对象构建的数据结构,这些数据结构应用广泛,几乎可被视作独立的基本对象类型。这些对象将在3.8节“常用数据结构”、3.9节“函数”和3.10节“文件规范”中进行介绍。
2025-02-05 13:10:12
620
原创 pdf reference 1.7 翻译4 第二章 概述
PDF是一种文件格式,用于以与创建文档时所用的应用软件、硬件和操作系统以及显示或打印文档的输出设备无关的方式来表示文档。一个PDF文档由一组对象组成,这些对象共同描述了一个或多个页面的外观,可能还会伴有额外的交互元素和更高级别的应用程序数据。一个PDF文件包含构成PDF文档的对象以及相关的结构信息,所有这些都表示为一个自包含的字节序列。文档的页面(以及其他可视元素)可以包含文本、图形和图像的任意组合。页面的外观由PDF内容流描述,内容流包含一系列要在页面上绘制的图形对象。这种外观是完全确定的;
2025-02-05 10:56:34
849
原创 pdf reference 1.7 翻译2 前言
便携文档格式(PDF)和Adobe® Acrobat®产品系列的起源可以追溯到1990年代初期。当时,PostScript®页面描述语言正迅速成为全球印刷页面制作的标准。PDF在PostScript页面描述语言的基础上,通过在其底层成像模型上叠加文档结构和交互式导航功能,提供了一种方便、高效的机制,使文档能够在任何地方可靠地查看和打印。PDF规范首次发布是在1993年,与首批Acrobat产品一同推出。从那时起,Adobe在万维网上持续提供规范的更新版本。
2025-02-05 10:50:28
263
原创 pdfjs源码学习(四)
pdfPageView中存储了每个页面相关的信息(pdfPageProxy,pageviewport,canvasLayer,textLayer,annotationLayer等)这里的优先级顺序可以看源代码,大概就是获取遍历visiblePage的范围,首先被遍历到的但是还没有渲染完的pageView首先被返回。如果所有的visible views都渲染完了,就开始渲染下一页(如果是向下滚动,向上滚动的话就是渲染上一页)让我们来捋一下pdf页面的渲染过程 ,这个过程感觉像在翻译代码= =
2025-01-22 15:06:37
451
原创 pdfjs源码学习(三)
具体可以看message_handler.js和operator_list.js的实现, operator_list定义了flush方法,内部调用了sink的enqueue方法,将命令分批传输出去。这样不仅解决了线程通信之间数据量过大的问题,而且主线程不需要等到全部的流传输完毕就可以开始绘制pdf页面了(线程之间互不影响),very nice。本来今天想了解一下绘制过程的,结果卡在了通信上,哈哈哈哈,继续来学习一下messge_handler,当时直接略过了,没想到这里面还有个槛。
2025-01-07 10:49:22
272
原创 pdfjs源码学习(二)
可以简单看一下PDFDocumentProxy 内部是如何获取页码的,transport就是构造代理对象的时候传入的messageHandler , getPage方法通过transport (messageHandler)发送了一个getPage的消息。这一块还是比较好理解的,因为发现自己曾经写过类似的代码> < ,当时为了解决桌面端和web页面之间的通信问题,自己手撸了一份简单的通信代码,和这个大差不差,人生就是在不停地重复造轮子。pdf的文档下载就是交给web worker去处理的。
2025-01-03 16:38:52
1444
原创 从无到有新建一个electron+react+typescript桌面客户端(一)
从无到有新建一个electron+react+typescript桌面客户端(一)
2022-09-02 09:22:31
1091
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人