Vue 3.6.0 Beta 進展:Vapor Mode 架構與無 Virtual DOM 的細粒度更新
Vue.js Core · v3.6.0-beta.14 · 2026-06-05
Vue 3.6.0-beta.14 持續推進 Vapor Mode 的開發。Vapor Mode 是 Vue 3.6 的核心特性,目標是提供一條無需 Virtual DOM 的編譯輸出路徑,透過靜態分析在編譯時決定哪些 DOM 節點需要更新,生成直接操作真實 DOM 的精確指令。
Vapor Mode 技術原理
傳統 Vue 3 的響應式系統在資料變更時觸發 Virtual DOM diff,比較前後兩棵 vnode 樹再 patch 至真實 DOM。Vapor Mode 改變這個流程:編譯器在靜態分析期間標記每個模板綁定的影響範圍,生成的 runtime 程式碼直接訂閱特定響應式信號,資料變更時只更新對應的 DOM 節點,跳過整個 diff 階段。
此模式的效能優勢在重度互動的大型列表或高頻更新場景中最為顯著,因為 diff 成本與 vnode 樹大小成線性關係,而 Vapor 的更新成本與綁定數量成線性關係(通常遠小於 vnode 數量)。
響應式核心重構
3.6 同步推進響應式系統內部重構,引入更細粒度的依賴追蹤機制,為 Vapor Mode 的信號訂閱模型奠定基礎。@vue/reactivity 的核心 track 與 trigger 路徑在此版本中獲得效能改善,降低訂閱者集合操作的開銷。
Vapor Mode 在 3.6 中以 opt-in 方式推出,現有 3.x 應用程式在不修改程式碼的情況下仍以 vnode 模式運行。Beta 迭代主要聚焦於 edge case 修復與編譯器輸出的穩定性。
原始來源:Vue.js Core Releases
npm v12 安全強化:git 依賴預設封鎖、Staged Publishing 與安裝來源控制
GitHub npm Changelog · 2026-06-10
npm v12(預計 Q3 2026)將對非 registry 安裝來源實施更嚴格的預設限制,作為供應鏈安全強化計畫的一部分。相關變更已在 npm 11.15.0 以旗標形式提前可用。
破壞性變更預告
最大的行為變更是 --allow-git 旗標預設值從 all 改為 none。這意味著:
# package.json 中的 git 依賴
"dependencies": {
"my-lib": "github:org/my-lib#main" // v12 預設將拒絕安裝
}同步新增三個對等旗標,分別控制本地檔案路徑安裝(--allow-file)、遠端 URL 安裝(--allow-remote)、本地目錄安裝(--allow-directory),各自接受 all 或 none,可在 .npmrc 中持久設定。其他 v12 破壞性變更包含移除 npm shrinkwrap、移除 npm adduser、以及 npm view --json 一律回傳陣列。
Staged Publishing:人工核准關卡
Staged Publishing 正式 GA(需 npm 11.15.0+)。新流程以 npm stage publish 取代 npm publish,先將 tarball 上傳至 stage 佇列,待維護者以 2FA 驗證手動核准後,套件才正式對外可安裝。此設計即使在 OIDC trusted publishing 的全自動 CI 流程中,也強制保留人工核准環節,防止 CI 被劫持後直接向 registry 投毒。