标签:javascript

ECMAScript 2025 特性:正则表达式的重复命名捕获组

在这篇博客文章中,我们将探讨 ECMAScript 2025 特性 ““重复命名捕获组””,该特性由 Kevin Gibbons 提出。 这是一个针对正则表达式的特性,允许我们多次使用相同的捕获组名称。 重复命名捕获组 重复捕获组名称通常不被允许的原因很明显:一个捕获只能有一个值...

React 19 让你编写不可能的组件

React 19已经到来,它带来了复杂而灵活的新功能、难以置信的优化,以及一种全新的思考应用程序的方式。 但在构建营销网站时,React 19的功能是否过于工程化?或者这些功能是否值得付出努力? 在过去的18个月里,这些功能已经在React Canary和Next.js App ...

命名设计令牌(Token)、组件和变量的最佳实践

快速摘要:我们如何能更擅长命名?这篇文章致力于命名约定、技巧和现实世界的例子,帮助您以一种健壮和灵活的方式命名事物。 命名很难。作为设计师和开发人员,我们经常在为设计令牌、颜色、UI组件、HTML类和变量找到正确名称方面遇到困难。有时,我们选择的名称太通用,因此很难理解确...

🛑 停止调整浏览器大小:提高响应式测试

这是我在2024年4月30日多伦多JS上做的闪电演讲的扩展思考文章。👉🏻 幻灯片在此 TLDR; 使用浏览器开发工具中的设备模式来准确模拟移动设备和平板电脑上的体验。 一个熟悉的故事 你得知自己有一周时间重写一个应用的前端,并且你得到了非常高精度的设计图。 在确认设计是移动...

我们(1password)如何使用esbuild将浏览器扩展构建时间减少90%

我们内部用于构建浏览器扩展代码的系统是在五年前搭建的。虽然我们能够逐步扩展它以满足我们的需求,但在这个过程中它变得越来越慢。让我们给它一个急需的升级! 我在2020年初作为实习生加入了1Password。那是一个有着……一些有趣记忆的日期!其中一个记忆是我还记得构建我们的浏览器扩...

并不是只有你这么觉得,Next.js 变得越来越难用了

前几天我写了一篇博客文章,讲述 Next.js 中间件如何有助于解决服务器组件强加的一些限制。这引发了一些有趣的讨论,关于这是否是一种合理的途径,或者 Next.js 的开发体验(DX)是否只是… 糟糕。 从我的角度来看,Next.js 的 App Router 有两个主要问...

在某个时刻,JavaScript变得出色了

我自2012年左右开始全职从事JavaScript工作,这既是幸运也是不幸。不幸的是,在2015年左右,当ECMAScript规范开始出现重大改进之前,这门语言每天都在让我头疼。 然而,我也很幸运,因为自那以后JavaScript进行了很多改进,但语言的基本工作原理仍然相同,所以...

使用 Promise.withResolvers() 随意控制 JavaScript Promises

JavaScript 中的 Promises 一直牢牢掌握着自己的命运。一个 Promise 在何时解决(或者更通俗地说,“定居”)取决于构造时提供的执行器函数。一个简单的例子: const promise = new Promise((resolve, reject) => {...

全栈 Web 推送 API 指南

推送通知在主流浏览器中得到支持,并且它们在去年添加到 iOS 后,成为了网络的一个引人注目的集成功能。我们最近构建了一个名为 Robert’s App 的可安装网络应用程序,它具有推送通知功能(阅读 iOS 安装指南 来测试它)。 我们使用 remix.run 构建了应用程序,并...

将滚动驱动的动画从 JavaScript 重构到 CSS

滚动链接动画目前在前端领域非常流行,这在很大程度上得益于原生 CSS 方法将动画链接到滚动进度的日益普及。我甚至在这个网站上使用了它们。屏幕左上角的进度指示器是使用大量尖端 CSS 特性构建的。 然而,滚动链接动画并不是什么新鲜事,真正新鲜的是日益增长的支持,可以在不编写一行 J...