Yihui’s Blog

文章与笔记

关于前端、工程与日常思考的记录。找到一个主题,开始阅读。

783 篇文章

渲染流水线:CSS如何影响首次加载时的白屏时间?

在上一篇文章中我们详细介绍了 DOM 的生成过程,并结合具体例子分析了 JavaScript 是如何阻塞 DOM 生成的。那本文我们就继续深入聊聊渲染流水线中的 CSS。因为 CSS 是页面中非常重要的资源,它决定了页面最终显示出来的效果,并影响着用户对整个网站的第一体验。所以,搞清楚浏览器中的 CSS 是怎么工…

阅读全文

页面性能:如何系统优化页面

在前面几篇文章中,我们分析了页面加载和 DOM 生成,讨论了 JavaScript 和 CSS 是如何影响到 DOM 生成的,还结合渲染流水线来讲解了分层和合成机制,同时在这些文章里面,我们还穿插说明了很多优化页面性能的最佳实践策略。通过这些知识点的学习,相信你已经知道渲染引擎是怎么绘制出帧的,不过之前我们介绍的…

阅读全文

页面性能分析:利用Chrome做web性能分析

“浏览器中的页面循环系统”模块我们已经介绍完了,循环系统是页面的基础,理解了循环系统能让我们从本质上更好地理解页面的工作方式,加深我们对一些前端概念的理解。 接下来我们就要进入新的模块了,也就是“浏览器中的页面”模块,正如专栏简介中所言,页面是浏览器的核心,浏览器中的所有功能点都是服务于页面的,而 Chrome …

阅读全文

咱们来整一个Node.js脚本,使用ffmpeg将视频转换为GIF文件

如果需要将视频转换为GIF文件,最先想到的肯定是使用ffmpeg,这是一个开源的跨平台的多媒体处理工具。ffmpeg具有强大的功能,可以处理视频和音频文件,并可以将它们转换为多种格式,包括GIF。 而当使用Node.js来一起进行音视频处理时,我们可以使用第三方库来简化代码。这次我们将使两个库:@ffmpeg-i…

阅读全文

async await使用同步方式写异步代码

在上篇文章中,我们介绍了怎么使用 Promise 来实现回调操作,使用 Promise 能很好地解决回调地狱的问题,但是这种方式充满了 Promise 的 then() 方法,如果处理流程比较复杂的话,那么整段代码将充斥着 then,语义化不明显,代码不能很好地表示执行流程。 比如下面这样一个实际的使用场景:我先…

阅读全文

BFF 模式 (Backend For Frontend)

面试和简历都提到了,所以来学习聊聊 PS: 你应该记住,BFF 是客户端和服务之间的转换层。 当数据从服务端API 返回时,其目的是将其转换为客户端应用程序指定的数据类型。 避免BFF 逻辑重复——需要注意的一个关键点是,单个BFF 应该满足特定的用户体验,而不是设备类型。 例如,大多数时候,所有移动设备(iOS…

阅读全文