认识 temporal-polyfill:JavaScript Date 的终极接班人,19.5KB 实现全套 Temporal 日期 API

📅 发布时间:2026/8/21 13:53:24
认识 temporal-polyfill:JavaScript Date 的终极接班人,19.5KB 实现全套 Temporal 日期 API 认识 temporal-polyfillJavaScript Date 的终极接班人19.5KB 实现全套 Temporal 日期 API【免费下载链接】temporal-polyfillA lightweight polyfill for Temporal, successor to the JavaScript Date object项目地址: https://gitcode.com/gh_mirrors/tempo/temporaltemporal-polyfill 是一款轻量级、规范兼容的Temporal polyfill它把下一代 JavaScript 日期 API——Temporal 完整地带到今天的主流浏览器和 Node.js 中。作为 Date 对象的终极接班人temporal-polyfill 以仅19.5KBgzip 压缩后的体积实现了 Instant、ZonedDateTime、PlainDate 等全套 Temporal 日期 API且规范兼容性接近完美。如果你正在为 JavaScript 日期处理寻找现代化方案这篇 temporal-polyfill 入门指南会告诉你它为什么值得立刻上手。为什么 JavaScript 需要 TemporalDate 对象的三大痛点JavaScript 的 Date 对象已经服役近三十年设计缺陷早已成为开发者日常踩坑的根源⚠️时间语义混乱Date 本质只存一个时间戳却把本地时间和UTC 时间混为一谈getMonth()从 0 开始计数更是经典陷阱⚠️缺少纯日期类型想表达2026 年 8 月 20 日这种不带时区的日期Date 完全无能为力⚠️API 脆弱易错字符串解析行为因浏览器而异日期加减要靠手写毫秒数代码可读性和可维护性都很差为此TC39 推出了Temporal 提案——一套全新的、不可变的、类型丰富的日期时间 API。而 temporal-polyfill正是让这套标准在今天就能跑起来的先行者。temporal-polyfill 是什么19.5KB 的轻量级 Temporal polyfilltemporal-polyfill 出自 FullCalendar 核心开发者之手目标是用最小的体积提供最完整的 Temporal 体验。它最大的卖点就是小且全对比项temporal-polyfilljs-temporal/polyfill基础版体积gzip19.5KB52.1KB167%全日历版体积gzip23.4KB52.1KB123%遵循规范版本2026 年 7 月最新版2025 年 3 月大整数策略少量使用原生 bigint依赖 JSBI 库实测数据来自项目内自动生成的体积报告 polyfill/scripts/size-comparison/RESULTS.md同样的完整功能体积只有主流替代品的约三分之一。temporal-polyfill 核心特性一览✅全套类型Instant、ZonedDateTime、PlainDate、PlainTime、PlainDateTime、PlainYearMonth、PlainMonthDay、Duration、Now、Calendar 一应俱全✅规范兼容全时区支持仅 2 处有意偏差其余与最新 Temporal 规范完全一致✅多日历支持标准版内置 iso8601 与 gregory/full/版额外支持佛历、农历、希伯来历、日本和历等 15 种以上日历✅多引入方式全局 polyfill、ponyfill、按需 shim任你组合✅内置 Tree-shakeable API按需打包专为组件库场景设计✅配套迁移工具codemod 一键把函数 API 改写回原生 Temporal 语法temporal-polyfill 快速安装步骤作为 npm 包temporal-polyfill 的安装和上手都非常简单两步搞定npm install temporal-polyfill然后只需一行 import 即可全局生效import temporal-polyfill/global Temporal.Now.zonedDateTimeISO().toString() // 2026-08-20T07:31:36-04:00[America/New_York]如果你偏爱不污染全局的 ponyfill 风格也可以这样写import { Temporal } from temporal-polyfill const today Temporal.PlainDate.from(2026-08-20) console.log(today.add({ days: 7 }).toString()) // 2026-08-27更多入口的细节可以查阅项目的 polyfill/README.md 完整文档。四种常用引入方式对比引入方式写法适用场景全局 polyfillimport temporal-polyfill/global绝大多数项目最常用本地 ponyfillimport { Temporal } from temporal-polyfill不想污染全局作用域强制非原生实现import { Temporal } from temporal-polyfill/implementation需要跨环境统一行为按需安装 shiminstall()自定义条件判断后再加载通过 CDN 快速体验不想引入打包器直接用 script 标签即可script srchttps://cdn.jsdelivr.net/npm/temporal-polyfill1.0.2/global.min.js/script script console.log(Temporal.Now.zonedDateTimeISO().toString()) /script面向组件库的 Tree-shakeable API把体积压缩到极致如果你在维护日期选择器、日程组件等第三方库temporal-polyfill 还内置了一套函数式 API每个操作都是独立函数作用于普通记录对象打包器只会保留你真正 import 的部分体积控制力远超类式 APIimport * as PlainDateFns from temporal-polyfill/fns/PlainDate const date PlainDateFns.create(2026, 6, 1) const later PlainDateFns.addMonths(date, 2) PlainDateFns.toString(later) // 2026-08-01每种 Temporal 类型都有独立子入口例如temporal-polyfill/fns/ZonedDateTime、temporal-polyfill/fns/PlainTime。完整的函数目录与类型说明见 docs/fns/index.md其中 PlainDate 的上百个操作函数就整理在 docs/fns/plaindate.md函数 API 的源码实现则位于 polyfill/src/funcApi/plainDate.ts内部的精妙算法值得一读。迁移无忧配套 codemod 自动改写回原生语法更妙的是这套函数 API 并非一条道走到黑。当原生 Temporal 普及之后你可以用配套的迁移工具把整个代码库一键改写成原生语法。工具说明见 codemod/README.mdnpx temporal-polyfill-codemod fns-to-temporal pathPlainDateFns.addMonths(date, 2)会自动变成date.add({ months: 2 })全程无需手工查找替换迁移成本几乎为零。temporal-polyfill 兼容性浏览器与 Node.jstemporal-polyfill 对运行环境的要求非常宽松绝大多数现代环境开箱即用运行环境最低版本特殊日历需求Chrome672018.05802020.02Firefox682019.07762020.05Safari142020.0914.12021.04Edge792020.01802020.02Node.js162021.04—项目 CI 会对 Node 16/18/20/22/24/26 全版本运行完整测试套件兼容性有保障。值得一提的是temporal-polyfill 在检测到原生 Temporal 时会自动优先使用原生实现真正做到新环境零开销、旧环境无缝兜底。总结现在就用上 Temporal 的未来temporal-polyfill 用 19.5KB 的体积换来了完整的 Temporal 体验规范兼容、类型齐全、日历丰富、还有极致的 Tree-shakeable 方案与零成本的迁移路径。无论你是普通业务项目、组件库作者还是老代码维护者它都能让你提前享受下一代 JavaScript 日期 API 的便利。如果你对源码实现感兴趣可以 clone 仓库地址https://gitcode.com/gh_mirrors/tempo/temporal深入阅读函数式 API 入口在 polyfill/src/funcApi/底层算法集中在 polyfill/src/internal/配套的日期工具库在 utils/src/都是理解 Temporal 规范的最佳教材。【免费下载链接】temporal-polyfillA lightweight polyfill for Temporal, successor to the JavaScript Date object项目地址: https://gitcode.com/gh_mirrors/tempo/temporal创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考