跳到主要内容

3 篇博文 含有标签「Node.js 12」

查看所有标签

`globalThis`

· 阅读需 2 分钟
Mathias Bynens ([@mathias](https://twitter.com/mathias))

如果你之前为网页浏览器编写过 JavaScript,你可能用过 window 来访问全局 this。在 Node.js 中,你可能使用过 global。如果你编写的代码需要同时在这两种环境下运行,你可能会检测这些对象哪个可用,然后使用它——但是随着你想支持的环境和用例数量的增加,需要检查的标识符列表会迅速膨胀,事情变得复杂起来:

`Intl.ListFormat`

· 阅读需 3 分钟
Mathias Bynens ([@mathias](https://twitter.com/mathias)) 和 Frank Yung-Fong Tang

现代的网页应用通常使用包含动态数据的列表。例如,一个照片查看器应用可能会显示如下内容:

此照片包含了 Ada、Edith 和 Grace

而一个基于文本的游戏可能需要展示不同形式的列表:

选择你的超级能力: 隐身、心灵致动 或 共情

由于每种语言具有不同的列表格式化惯例和用词,实现一个本地化列表格式化工具是极其复杂的。这不仅需要列出每种语言中所有的单词(如上述例子中的 “和” 或 “或”),还需要在编码时定义这些语言的具体格式化规则。Unicode CLDR 提供了这些数据,但在 JavaScript 中使用这些数据需要事先嵌入,并与其他库代码一起发送。这不幸会增加这些库的打包体积,从而对加载时间、解析/编译成本以及内存消耗产生负面影响。

`Intl.RelativeTimeFormat`

· 阅读需 5 分钟
Mathias Bynens ([@mathias](https://twitter.com/mathias))

现代 Web 应用程序通常使用诸如“昨天”、“42 秒前”或“3 个月后”的短语代替完整的日期和时间戳。这种 相对时间格式化值 已经变得如此普遍,以至于许多流行的库都实现了以本地化方式格式化它们的工具函数。(例如 Moment.jsGlobalize、和 date-fns。)