博文列表

Iterator helpers 迭代器助手

Iterator helpers 是迭代器原型上的一组新方法,有助于一般的迭代器使用。由于这些辅助方法在迭代器原型上,任何在其原型链上具有 Iterator.prototype 的对象(例如数组迭代器)都会获得这些方法。在以下各小节中,我们将解释 Iterator helpers。提供的所有示例都在博客存档页...

博文封面

Vue 3中的状态管理:为什么你应该尝试Pinia

他们说编程中有两件难事:命名和缓存失效。我想再增加一项:现代 Web 应用中的状态管理! 今天,我们将深入探讨 Vue 中的状态管理策略,并介绍直观的存储库 Pinia。 Vue 状态管理:注意事项和限制 从 Vue 2 开始的时代起,我们使用 data 选项来定义一个方法,该方法返回一个包含组件所需的所有响...

博文封面

你可能不知道的 CSS 按钮样式

按钮无处不在! 我们可以使用各种花样的 CSS 来样式化按钮。例如,我更喜欢使用 Flexbox 布局。在这篇博文中,我将分享一些不太为人所知的 CSS 样式。 让我们使用这个示例代码: <button type="submit" class="button"> <img href="icon.svg" ...

博文封面

学习这些视口相关的 CSS 单位(100vh、100dvh、100lvh、100svh)

在本教程中,我们将讨论使用经典的 100vh 单位创建全屏部分时面临的挑战,并讨论一些出色的替代 CSS 单位。 英雄或全屏部分是 UI 设计的重要组成部分。它们存在于不同类型的网站中,从登陆页面到作品集网站,旨在在首次吸引访客的注意力。英雄部分的常见组成部分包括幻灯片、图片、视频、标题、文本、行动链接等。 ...

博文封面

如何使用 Web 蓝牙 API

几周前,我偶然发现了一个我以前不知道存在的浏览器 API;那就是 Web 蓝牙 API。看起来它已经在开发中有 7 年以上的时间了,我很高兴大多数浏览器现在都支持它。我非常喜欢“一次构建,到处运行”的理念,这也是 Web 蓝牙令人兴奋的原因之一。您无需为 Android、iOS、macOS 或 Windows...

Node.js TSC确认:不打算从发行版中删除npm

Node.js技术指导委员会已确认,在持续讨论启用Corepack默认设置的情况下,将npm从Node.js发行版中移除不是项目的目标。 Node.js技术指导委员会(TSC)本周举行了会议,并在关于启用Corepack默认设置的更广泛讨论中做出了一些关键决定。与会成员确认已经达成共识,即没有打算移除...

断言的黄金法则

如果我告诉你,有一条规则可以可靠地区分好的测试和坏的测试,你会怎么想? 这不是一个把戏,也不是销售噱头。这是我多年来一直在使用的一条规则,无数次帮助我改进我的测试,使它们更加稳定可靠、更有价值。事实上,这条实践中不可或缺的规则如此重要,我在此正式将其称为断言的黄金法则: 只有当系统的意图未被满足时,测试...

博文封面

Microdiff: 构建最快的对象和数组差异化

我维护着 Microdiff,这是一个针对深层对象差异化进行了性能和尺寸优化的库。有人在一个

在Node.js中使用`require(esm)`

最近,我在Node.js中实验性地引入了对同步ES模块的require()支持,这是一个早就应该实现的功能。在这个拉取请求中,我在评论中表达了我对为什么在2024年之前没有早点实现这个功能的理解。本文对此进行了更详细的阐述。 本文中的观点代表我个人的看法,反映了我作为一个长期旁观者

类型谓词推断:TS 5.5 中的意外之举

TypeScript 5.5 将在接下来的几个月内发布。特别感谢一位贡献者的 PR,我已经知道这将是一个令人难以置信的版本。 上周五,TypeScript 合并了 Dan Vanderkam 的 PR,以"使用控制流分析从函数体中推断类型谓词"。让我们详细解释一下这个 PR 改变了什么,以及为什么这是一件大事...