<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Javascript on Commentary of Takao</title><link>https://takao.blog/zh/tags/javascript/</link><description>Recent content in Javascript on Commentary of Takao</description><generator>Hugo -- gohugo.io</generator><language>zh</language><copyright>Commentary of Takao</copyright><lastBuildDate>Wed, 15 Jul 2026 22:01:08 +0900</lastBuildDate><atom:link href="https://takao.blog/zh/tags/javascript/index.xml" rel="self" type="application/rss+xml"/><item><title>React 19 新功能：开发人员需要了解的内容</title><link>https://takao.blog/zh/web/react-19-new-features/</link><pubDate>Wed, 08 Jul 2026 10:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/react-19-new-features/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-19-new-features-zh.png" alt="Featured image of post React 19 新功能：开发人员需要了解的内容" /&gt;&lt;h2 id="react-19-发生了什么变化"&gt;React 19 发生了什么变化
&lt;/h2&gt;&lt;p&gt;React 19 不是一个小更新，而是一个范式转变。稳定的服务器组件、新的钩子和 React 编译器从根本上改变了开发人员编写应用程序的方式。&lt;/p&gt;
&lt;h2 id="稳定的服务器组件"&gt;稳定的服务器组件
&lt;/h2&gt;&lt;p&gt;React 服务器组件 (RSC) 现已投入生产。通过在服务器上渲染并将 HTML 发送到客户端，它们可以显着减小包的大小。&lt;/p&gt;</description></item><item><title>替换 LocalStorage：动态 IndexedDB 包装器 localForage</title><link>https://takao.blog/zh/web/js-indexeddb-localforage-localstorage/</link><pubDate>Fri, 20 Feb 2026 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/js-indexeddb-localforage-localstorage/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-indexeddb-localforage-localstorage-zh.png" alt="Featured image of post 替换 LocalStorage：动态 IndexedDB 包装器 localForage" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;客户端存储是现代 Web 应用程序的基本要求 - 离线缓存、用户首选项、草稿数据和会话状态都需要保留在浏览器中。多年来，&lt;strong&gt;localStorage&lt;/strong&gt; 一直是最简单的首选解决方案，但随着应用程序的增长，它的局限性变得令人痛苦。本文对 localStorage、原始 IndexedDB 和 &lt;strong&gt;localForage&lt;/strong&gt; 包装器库进行了比较，为选择正确的存储引擎提供了实用指导。&lt;/p&gt;</description></item><item><title>使用 v 标志解锁 JavaScript RegExp 功能</title><link>https://takao.blog/zh/web/js-regex-v-flag/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/js-regex-v-flag/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-regex-v-flag-zh.png" alt="Featured image of post 使用 v 标志解锁 JavaScript RegExp 功能" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;JavaScript 中的正则表达式已经有了显着的发展。 ES2024 引入了 &lt;strong&gt;&lt;code&gt;v&lt;/code&gt; 标志&lt;/strong&gt; — &lt;code&gt;u&lt;/code&gt; 标志的超集，可解锁强大的集合表示法、字符类减法、交集和正确的 Unicode 表情符号匹配。如果您一直在努力应对复杂的字符类逻辑或表情符号正则表达式模式，那么 &lt;code&gt;v&lt;/code&gt; 标志将改变游戏规则。&lt;/p&gt;</description></item><item><title>设计干净的 React 自定义 Hook 以实现可重用性</title><link>https://takao.blog/zh/web/react-custom-hooks-rules/</link><pubDate>Sun, 10 Aug 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/react-custom-hooks-rules/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-custom-hooks-rules-zh.png" alt="Featured image of post 设计干净的 React 自定义 Hook 以实现可重用性" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;当您开发 React 组件时，您可能会发现文件增长到数百行。当 &lt;code&gt;useState&lt;/code&gt;、&lt;code&gt;useEffect&lt;/code&gt;、API 查询和验证逻辑与渲染标记混合时，就会发生这种情况，使组件难以阅读和维护。&lt;/p&gt;</description></item><item><title>Node.js 中的 ESM 与 CommonJS 互操作挑战</title><link>https://takao.blog/zh/web/node-esm-cjs-interoperability/</link><pubDate>Fri, 25 Jul 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/node-esm-cjs-interoperability/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/node-esm-cjs-interoperability-zh.png" alt="Featured image of post Node.js 中的 ESM 与 CommonJS 互操作挑战" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;Node.js 自 v12 起就支持 ECMAScript 模块 (ESM)，但生态系统仍然深深植根于 CommonJS (CJS)。将两个模块系统混合在一个项目中——或者从 ESM 代码中使用 CJS 包——会引入围绕导出、默认导入和全局的微妙陷阱。本文绘制了互操作边界并提供了平滑迁移的具体策略。&lt;/p&gt;</description></item><item><title>使用 requestIdleCallback 执行非阻塞脚本</title><link>https://takao.blog/zh/web/web-performance-requestidlecallback-optimizations/</link><pubDate>Fri, 25 Jul 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/web-performance-requestidlecallback-optimizations/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/web-performance-requestidlecallback-optimizations-zh.png" alt="Featured image of post 使用 requestIdleCallback 执行非阻塞脚本" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;在构建复杂的 Web 应用程序时，保持流畅的动画和响应式用户输入（理想情况下匹配 60+ FPS 帧速率）对于良好的用户体验至关重要。&lt;/p&gt;
&lt;p&gt;然而，现代应用程序通常需要执行低优先级的后台操作，例如发送分析数据、同步缓存、解析遥测日志或预取资产。&lt;/p&gt;</description></item><item><title>ECMAScript 2025 (ES16) 中令人兴奋的功能</title><link>https://takao.blog/zh/web/js-es2025-new-features/</link><pubDate>Thu, 15 May 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/js-es2025-new-features/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-es2025-new-features-zh.png" alt="Featured image of post ECMAScript 2025 (ES16) 中令人兴奋的功能" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;每年，TC39 委员会都会更新 ECMAScript 规范，为 JavaScript 生态系统引入新的语言功能和 API。&lt;/p&gt;
&lt;p&gt;对于即将推出的 &lt;strong&gt;ECMAScript 2025 (ES16)&lt;/strong&gt; 标准，一些提案已达到第 3 阶段或第 4 阶段，表明它们正处于浏览器实施和采用的最后阶段。&lt;/p&gt;</description></item><item><title>React 19 正式发布及实用功能指南</title><link>https://takao.blog/zh/web/react-19-new-features-practical/</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/react-19-new-features-practical/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/react-19-new-features-practical-zh.png" alt="Featured image of post React 19 正式发布及实用功能指南" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;React 19 代表了前端开发的重大范式转变。&lt;/p&gt;
&lt;p&gt;以前仅限于 Next.js 等元框架的功能（例如用于表单处理的 &lt;strong&gt;React Server Components (RSC)&lt;/strong&gt; 和 &lt;strong&gt;Actions API&lt;/strong&gt;）现在已正式集成到稳定的核心 React 库中。&lt;/p&gt;
&lt;p&gt;本指南重点介绍了 React 19 中最重要的功能，提供了实用的代码示例和升级技巧来清理您的代码库。&lt;/p&gt;</description></item><item><title>JavaScript 异步/等待应避免的模式</title><link>https://takao.blog/zh/web/javascript-async-await-tips/</link><pubDate>Sat, 15 Feb 2025 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/javascript-async-await-tips/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/javascript-async-await-tips-zh.png" alt="Featured image of post JavaScript 异步/等待应避免的模式" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;自从 ES2017 中引入 &lt;code&gt;async/await&lt;/code&gt; 以来，编写异步 JavaScript 变得更加直观。它允许开发人员以看起来同步的结构表达异步逻辑，与嵌套的 Promise 链 (&lt;code&gt;.then().catch()&lt;/code&gt;) 相比，大大提高了代码库的可读性。&lt;/p&gt;
&lt;p&gt;然而，这种干净的类似同步的语法可以隐藏性能缺陷和错误处理错误。在本文中，我们将深入研究常见的异步/等待反模式，并学习如何将它们重构为高性能、有弹性的代码。&lt;/p&gt;</description></item><item><title>文件系统访问API：强大的本地文件操作</title><link>https://takao.blog/zh/web/file-system-access-api/</link><pubDate>Sat, 28 Dec 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/file-system-access-api/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/file-system-access-api-zh.png" alt="Featured image of post 文件系统访问API：强大的本地文件操作" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;几十年来，Web 应用程序仅限于通过笨重的 &lt;code&gt;&amp;lt;input type=&amp;quot;file&amp;quot;&amp;gt;&lt;/code&gt; 元素读取文件，并且没有可靠的方法将更改保存回原始文件。文件系统访问 API 完全改变了这一点。它使 Web 应用程序能够直接在用户的本地文件系统上读取、写入和管理文件和目录——当然，需要用户许可。这为构建原生的文本编辑器、图像编辑器、IDE 和生产力工具打开了大门。&lt;/p&gt;</description></item><item><title>JavaScript 数组方法：从基础知识到高级模式</title><link>https://takao.blog/zh/web/js-array-methods/</link><pubDate>Thu, 12 Dec 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/js-array-methods/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-array-methods-zh.png" alt="Featured image of post JavaScript 数组方法：从基础知识到高级模式" /&gt;&lt;p&gt;JavaScript 数组是现代 Web 开发中数据操作的支柱。随着 ES2023 规范引入了长期变异方法的不可变替代方案，现在是重新审视我们如何使用数组的最佳时机。本文涵盖了数组方法的全部内容，从熟悉的 &lt;code&gt;map&lt;/code&gt;、&lt;code&gt;filter&lt;/code&gt; 和 &lt;code&gt;reduce&lt;/code&gt; 到前沿的添加，并提供了实际示例和性能见解。&lt;/p&gt;</description></item><item><title>JavaScript 类型数组：浏览器中的二进制数据处理</title><link>https://takao.blog/zh/web/js-typed-arrays/</link><pubDate>Tue, 10 Sep 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/js-typed-arrays/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-typed-arrays-zh.png" alt="Featured image of post JavaScript 类型数组：浏览器中的二进制数据处理" /&gt;&lt;p&gt;JavaScript 的原生 &lt;code&gt;Number&lt;/code&gt; 类型（IEEE 754 双精度浮点数）对于二进制数据来说效率低下。早期的解决方案涉及在普通数组中手动​​打包字节，这种方法速度慢且容易出错。 ECMAScript 2015 正式化了类型数组，为 JavaScript 带来了类似 C 的内存管理。这种三层架构 — &lt;code&gt;ArrayBuffer&lt;/code&gt;、TypedArray 视图和 &lt;code&gt;DataView&lt;/code&gt; — 支持在浏览器和 Node.js 中进行高性能二进制数据处理。&lt;/p&gt;</description></item><item><title>JavaScript 模块联盟：微前端实践</title><link>https://takao.blog/zh/web/module-federation/</link><pubDate>Tue, 09 Jul 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/module-federation/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/module-federation-zh.png" alt="Featured image of post JavaScript 模块联盟：微前端实践" /&gt;&lt;h2 id="介绍"&gt;介绍
&lt;/h2&gt;&lt;p&gt;Webpack 5 中引入的模块联合提供了用于构建微前端架构的运行时集成机制。与构建时集成方法不同，它使独立部署的应用程序能够在运行时共享代码，从而促进团队自治和增量迁移，而无需协调发布。&lt;/p&gt;</description></item><item><title>JavaScript 代理和 Reflect API：元编程模式</title><link>https://takao.blog/zh/web/js-proxy-reflect/</link><pubDate>Tue, 04 Jun 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/js-proxy-reflect/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-proxy-reflect-zh.png" alt="Featured image of post JavaScript 代理和 Reflect API：元编程模式" /&gt;&lt;p&gt;JavaScript 的 &lt;code&gt;Proxy&lt;/code&gt; 和 &lt;code&gt;Reflect&lt;/code&gt; API 是该语言中最强大的元编程工具之一。它们允许开发人员拦截和自定义对象的基本操作——属性访问、赋值、枚举、函数调用，甚至构造函数调用。本文探讨了所有 13 个代理陷阱、互补的 &lt;code&gt;Reflect&lt;/code&gt; API 以及 Vue 3、MobX 和 Immer 等生产框架中使用的真实模式。&lt;/p&gt;</description></item><item><title>用于实时应用程序的 WebSocket：完整指南</title><link>https://takao.blog/zh/web/websocket-applications/</link><pubDate>Tue, 14 May 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/websocket-applications/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/websocket-applications-zh.png" alt="Featured image of post 用于实时应用程序的 WebSocket：完整指南" /&gt;&lt;p&gt;实时功能已成为现代 Web 应用程序的基本期望。 WebSocket 通过单个 TCP 连接提供全双工通信通道，从而实现客户端和服务器之间的低延迟数据交换。本指南涵盖了 WebSocket 协议、实现模式、扩展策略以及构建生产级实时应用程序的实际注意事项。&lt;/p&gt;</description></item><item><title>Node.js 工作线程：并行处理实践</title><link>https://takao.blog/zh/web/nodejs-worker-threads/</link><pubDate>Tue, 23 Apr 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/nodejs-worker-threads/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nodejs-worker-threads-zh.png" alt="Featured image of post Node.js 工作线程：并行处理实践" /&gt;&lt;p&gt;Node.js 传统上是单线程的，依赖异步 I/O 来实现并发。虽然此模型擅长处理 I/O 密集型工作负载，但 CPU 密集型操作会阻止事件循环并降低应用程序响应能力。在 Node.js 12 中稳定的工作线程通过在单独的 V8 隔离中运行 JavaScript 来在单个进程中提供真正的并行执行。本文介绍了在生产中使用工作线程的实用模式。&lt;/p&gt;</description></item><item><title>ES2024 新功能：JavaScript 的新功能</title><link>https://takao.blog/zh/web/es2024-new-features/</link><pubDate>Tue, 12 Mar 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/es2024-new-features/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/es2024-new-features-zh.png" alt="Featured image of post ES2024 新功能：JavaScript 的新功能" /&gt;&lt;p&gt;ECMAScript 2024 (ES15) 为 JavaScript 引入了几个期待已久的功能。本文通过实际示例和采用时间表指南介绍了新功能。&lt;/p&gt;
&lt;h2 id="数组分组objectgroupby-和-mapgroupby"&gt;数组分组：Object.groupBy 和 Map.groupBy
&lt;/h2&gt;&lt;p&gt;最受欢迎的 JavaScript 功能之一终于到来了。 &lt;code&gt;Object.groupBy&lt;/code&gt; 和 &lt;code&gt;Map.groupBy&lt;/code&gt; 根据回调将数组元素划分为组：&lt;/p&gt;</description></item><item><title>ESLint Flat Config：旧版 .eslintrc 的迁移指南</title><link>https://takao.blog/zh/web/eslint-flat-config/</link><pubDate>Mon, 26 Feb 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/eslint-flat-config/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/eslint-flat-config-zh.png" alt="Featured image of post ESLint Flat Config：旧版 .eslintrc 的迁移指南" /&gt;&lt;p&gt;ESLint v9.0 于 2024 年发布，将平面配置系统 (&lt;code&gt;eslint.config.js&lt;/code&gt;) 设为默认值，取代了已使用十多年的旧版 &lt;code&gt;.eslintrc&lt;/code&gt; 格式。本迁移指南涵盖了完整的迁移过程、新概念和实际示例。&lt;/p&gt;
&lt;h2 id="为什么采用扁平化配置"&gt;为什么采用扁平化配置？
&lt;/h2&gt;&lt;p&gt;遗留的 &lt;code&gt;.eslintrc&lt;/code&gt; 系统存在几个问题：配置级联使行为变得不可预测，基于目录的解析很复杂，JSON/YAML 缺乏对函数和注释的支持，以及难以编写可共享的配置。扁平配置通过单个配置文件、通过 JavaScript 数组的显式组合、简化的插件解析和完整的 JavaScript 原生语法来解决这些问题。&lt;/p&gt;</description></item><item><title>JavaScript 事件循环深入探讨：微任务、宏任务及其他</title><link>https://takao.blog/zh/web/js-event-loop/</link><pubDate>Mon, 19 Feb 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/js-event-loop/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-event-loop-zh.png" alt="Featured image of post JavaScript 事件循环深入探讨：微任务、宏任务及其他" /&gt;&lt;p&gt;JavaScript 事件循环是该语言中最重要但又被误解的概念之一。尽管 JavaScript 是单线程的，但它的事件循环通过复杂的队列系统实现了非阻塞并发。本文构建了 JavaScript 如何处理异步执行的完整心智模型，从调用堆栈到微任务队列以及其间的所有内容。&lt;/p&gt;</description></item><item><title>Vite插件开发：从零到量产</title><link>https://takao.blog/zh/web/vite-plugin-dev/</link><pubDate>Mon, 05 Feb 2024 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/vite-plugin-dev/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/vite-plugin-dev-zh.png" alt="Featured image of post Vite插件开发：从零到量产" /&gt;&lt;p&gt;Vite 的插件系统是其最强大的功能之一，允许开发人员扩展和自定义构建管道。无论您需要转换文件类型、注入构建时常量还是与其他工具集成，Vite 插件 API 都可以让您完全控制。&lt;/p&gt;</description></item><item><title>Node.js Streams：数据处理实用指南</title><link>https://takao.blog/zh/web/nodejs-streams/</link><pubDate>Wed, 20 Dec 2023 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/nodejs-streams/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/nodejs-streams-zh.png" alt="Featured image of post Node.js Streams：数据处理实用指南" /&gt;&lt;p&gt;Node.js 流是该平台最强大但未得到充分利用的功能之一。它们可以在数据到达时逐段处理数据，而不是将整个数据集加载到内存中。这使得它们对于处理大文件、网络通信和实时数据转换至关重要。本指南涵盖了构建强大数据管道的流基础知识和实用模式。&lt;/p&gt;</description></item><item><title>高级 JavaScript Promise 模式：掌握异步控制流</title><link>https://takao.blog/zh/web/js-promise-patterns/</link><pubDate>Tue, 05 Dec 2023 00:00:00 +0900</pubDate><guid>https://takao.blog/zh/web/js-promise-patterns/</guid><description>&lt;img src="https://takao.blog/img/thumbnail/js-promise-patterns-zh.png" alt="Featured image of post 高级 JavaScript Promise 模式：掌握异步控制流" /&gt;&lt;p&gt;Promise 是现代 JavaScript 的基础，但掌握异步控制流需要超越基本的 &lt;code&gt;.then()&lt;/code&gt; 链。本文探讨了中高级开发人员生产应用程序所需的高级 Promise 模式，从并发控制到错误处理和取消。&lt;/p&gt;
&lt;h2 id="超越基础的承诺景观"&gt;超越基础的承诺景观
&lt;/h2&gt;&lt;p&gt;JavaScript 在 Promise 上提供了四种静态方法来组合异步操作，每种方法适合不同的场景：&lt;/p&gt;</description></item></channel></rss>