跳至主要内容

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

一款文字遊戲可能會顯示另一種類型的列表:

選擇你的超能力:隱形、心靈控制、 共情能力

由於每種語言的列表格式化習慣和詞語各不相同,實現一個本地化的列表格式化器並非易事。不僅需要獲取所有希望支持語言中的相關詞語(如上例中的 “and” 或 “or”),還需要對所有這些語言的格式化習慣進行編碼!Unicode CLDR 提供這些數據,但要在 JavaScript 中使用它,這些數據需嵌入並隨其他庫代碼一起傳遞。這樣不幸會增加庫的捆綁大小,進而對加載時間、解析/編譯成本及內存消耗造成負面影響。

`Intl.RelativeTimeFormat`

· 閱讀時間約 5 分鐘
Mathias Bynens ([@mathias](https://twitter.com/mathias))

現代的網頁應用程式通常會使用「昨天」、「42秒前」或「3個月後」此類短語,而不是完整的日期和時間戳。這些 相對時間格式化值 已變得如此常見,以至於許多流行的函式庫都實作了能夠以本地化方式格式化它們的工具函數。(例子包括 Moment.jsGlobalizedate-fns。)