前端前線 2026 年 5 月 23 日

2026-05-23 — Deno 2.8 import defer npm 冷啟動 3.66x、Safari 26.5 :open 偽類別

primary=https://deno.com/blog/v2.8 primary=https://webkit.org/blog/17938/webkit-features-for-safari-26-5/

Deno 2.8:import defer、六支新子命令、npm 冷啟動加速 3.66 倍

deno.com · 2026-05-22

Deno 2.8 於 2026 年 5 月 22 日發佈,帶來 TC39 Stage 3 的 import defer 提案支援、六支全新子命令,以及一批 Node.js 相容性改善,使 Node.js 官方測試套件通過率從 42% 跳至 76.4%,大幅超越 Bun 1.3.14 的 40.6%。

六支新子命令

deno transpile 把 TypeScript/JSX 剝離型別後輸出純 JavaScript,支援 source map 與 .d.ts 生成,不重寫模組路徑。deno pack 則將 Deno/JSR 專案打包成可上傳 npm 的 tarball,自動將 jsr:@std/path 重寫為 @jsr/std__path 並生成 package.json 與型別宣告。

deno ci 強制要求 deno.lock 存在且完全吻合(等同 --frozen),專為 CI 環境設計。deno audit fix 自動把有漏洞的 npm 套件升級至修補版本,需要主要版本升級者另行標記。deno bump-version 根據 Conventional Commits 計算各工作空間成員的語意化版本增量;deno why 追蹤 npm 與 JSR 套件在依賴樹中的所有路徑。

import defer 與模組評估延遲

import defer * as heavy from './heavy.ts' 讓模組解析(parsing)發生在靜態分析階段,但實際程式碼執行(evaluation)推遲到首次存取匯出成員時才觸發。對啟動時不一定會用到的昂貴模組而言,可顯著縮短冷啟動時間,尤其有利於 CLI 工具和 Serverless functions。Deno 同時升級至 TypeScript 6.0.3,V8 引擎升至 14.9。

效能數字

項目Deno 2.7Deno 2.8倍率
npm 冷啟動安裝3,319 ms906 ms3.66×
node:http 吞吐量基準2.21×
node:buffer base64基準3.07×
node:crypto scrypt基準2.12×

npm 安裝加速來自縮簡版 packument、並行解析、離線事件迴圈解壓縮,以及 simdutf base64 編碼deno upgrade 增量更新機制可將典型補丁下載量壓縮 87–93%。

破壞性變更

  • setTimeout/setInterval 現在回傳 Node.js 的 Timeout 物件而非數字,與 node:timers 行為一致
  • 測試 sanitizer(sanitizeOpssanitizeResources)預設值從 true 改為 false
  • lib.node 型別預設包含;no-process-globalno-node-globals lint 規則預設關閉

原始來源:Deno Blog · v2.8


Safari 26.5::open 偽類別、CSS random() element-scoped 與 Origin API

webkit.org · 2026-05-22

Safari 26.5 隨 macOS 和 iOS 一同推出,WebKit 部落格列出 63 項修復與新功能,涵蓋 CSS、Web API、SVG 與無障礙改善。最重要的新增是 :open 偽類別與 CSS random()element-scoped 關鍵字,兩者均已進入 W3C CSS Working Group 草稿。

:open 偽類別

:open 可選中處於展開狀態的元素,適用範圍包括 <details><dialog><select><input>(如日期選擇器彈出視窗)。此前開發者必須透過 JavaScript 手動切換 CSS class 才能為「開啟狀態」加樣式;:open 讓這整個模式在純 CSS 中即可實現,且不需要 :is(details[open], dialog[open]) 這類繁瑣選擇器組合。

CSS random() element-scoped

random() 函數允許在 CSS 中產生隨機值,element-scoped 關鍵字讓每個元素獨立取得一個隨機值,適合用於錯落排版、隨機動畫延遲或生成式設計。同時移除了語意不明確的 element-shared 關鍵字。

/* 每個 .card 元素獨立取得隨機延遲 */
.card {
  animation-delay: random(element-scoped, 0s, 1s);
}

ToggleEvent.source 與 Origin API

Popover API 新增 ToggleEvent.source 屬性,直接指向觸發 popover 切換的元素,省去手動追蹤觸發者的邏輯。Origin API 提供結構化的 Origin 物件,允許在不解析字串的情況下比對來源,且支援不透明來源(opaque origin)的比較,解決了 window.origin 回傳字串時的歧義問題。

Anchor Positioning 與 SVG 改善

Anchor Positioning 修正了多個錯誤:媒體查詢重新評估、多層錨定鏈、fallback 值,以及 sticky positioning 的互動問題。SVG 新增 color-interpolation 屬性,支援 linearRGB 色彩空間用於漸層,讓顏色過渡在感知上更均勻。

原始來源:WebKit Blog · Safari 26.5


End of article
0
Would love your thoughts, please comment.x
()
x