首頁 > web前端 > js教程 > ViteConf 創新、公告和未來之路

ViteConf 創新、公告和未來之路

DDD
發布: 2024-11-17 11:14:01
原創
453 人瀏覽過

你好^_~;
我是 Lamine,很高興能分享我的第一篇技術文章,探討 ViteConf 2024 的亮點。作為一個深入技術寫作的技術愛好者,我期待您的回饋和建議,以幫助改進我未來的內容。

在深入討論會議細節之前,我們先來探討一下ViteViteConf是什麼?

Vite 是由 Evan You(Vue.js 的創建者)創建的下一代前端構建工具。它透過使用本機 ES 模組的開發伺服器提供閃電般快速的熱模組替換 (HMR),從而顯著增強了 Web 開發體驗。 Vite 配置簡單,使用 Rollup 捆綁程式碼,並利用 SWC(Speedy Web Compiler)進行高效率的程式碼轉換。
ViteConf 是一年一度的免費線上活動,以引人入勝的互動形式將 Vite 社群聚集在一起。專家和愛好者齊聚一堂,分享知識並展示新功能。今年(2024 年 10 月 3 日至 4 日)是該活動的第三屆,在 12 小時的馬拉鬆比賽中設有 43 個工作坊。

總結 12 小時的內容以及大量技術細節非常具有挑戰性。但我已經盡力在不遺漏重要資訊的情況下最大限度地總結它。為了簡化我們的文章,我保留了大多數 ViteConf 演講的原始標題,並將它們分為 8 個主要部分:

  • ViteConf24 的熱門公告。
  • 增強的 Vite 整合。
  • 使用 Vite 進行特定於框架的開發。
  • 性能和效率提升。
  • 開發者工具與除錯增強功能。
  • 真實案例研究和成功故事。
  • 未來趨勢與社區發展。
  • 探索框架設計的新領域。

ViteConf Innovations, Announcements, and the Road Ahead

我們的活動帶來了一些重大公告,為 Vite 的未來鋪平道路。富有遠見的演講者介紹了具有重塑網路開發潛力的改變遊戲規則的工具和平台。讓我們來深入了解一下亮點吧!

無效(⌀):

Evan You 宣布成立 Void Zero,這是一家專注於建立下一代 JavaScript 工具的新公司。該公司已籌集了 460 萬美元的種子資金,由 Accel 和 Amplify Partners 牽頭,開發者工具領域經驗豐富的創辦人也參與其中。 Void Zero 致力於實現 Evan 的願景,即為 JavaScript 開發創建一個與運行時無關的統一、高效能和可組合的工具鏈。 Evan 還討論了 Void Zero 目前的進展,並分享了一些令人印象深刻的測試基準,這些基準肯定會令人驚嘆。

螺栓.新:

StackBlitz 共同創辦人 Eric Simons 宣布 Bolt.new,這是一款革命性工具,利用 StackBlitz 的 WebContainer 技術的既定功能,有望重塑 Web 開發格局。 Bolt.new 為開發人員提供了全端、瀏覽器內環境,允許即時專案建立、偵錯、錯誤修復和部署,所有這些均由最先進的大型語言模型 Claude 和 V0 提供支援。
Eric 解釋了 Bolt.new 是如何設計來消除設定時間的。透過輸入簡單的提示,開發人員可以直接從瀏覽器產生完全配置的應用程序,這真正改變了遊戲規則。透過整合的套件管理和依賴性處理,他在演講中展示的力量是無與倫比的。掌握其潛力的最佳方法就是親自嘗試 Bolt.new。
在此公告後,Eric 也透露了另一個重大更新:Bolt.new Core 現已開源並可在 github 上使用。

OXC 和回滾:

在Evan 介紹了OXC 和Rolldown 以及它們即將與Vite 環境整合之後,Oxc 專案的創建者Boshen Chen 介紹了OXC,這是一個用Rust 編寫的雄心勃勃、高性能、完全整合的JavaScript 工具鏈,旨在顯著提高提高效能和開發人員體驗。它包括:

  • 解析器: 高效能解析器,效能優於 SWC 和 Babel 等現有工具。
  • Linter (OxLint): 一種快速的 linter,可以有效分析大型程式碼庫,包含來自 ESLint 的 400 條規則,但效能比它高出 50-100 倍。
  • 解析器: 模組解析系統比 webpack 和其他現有工具快 28 倍。
  • Transformer(正在進行中): 一個強大的變壓器,可以處理各種 JavaScript 方言,包括 TypeScript 和 JSX,目前支援 TypeScript 和 React JSX 轉換。

未來計畫的組件包括:

  • 格式化程式: 設計為相容於 Prettier。
  • 壓縮器:旨在實現更快的速度和增強的壓縮。

博神也推出了Vite未來的捆綁器Rolldown,它使用OXC作為其核心引擎。 Rolldown 提供高效能並支援一系列功能,包括 tree-shaking、程式碼分割和外掛程式相容性。
下一步涉及 Vite 與 OXC 和 Rolldown 的更深入集成,這將帶來顯著的效能提升、更一致的開發者體驗以及處理更大、更複雜的 Web 應用程式的能力。

新環境 API:靈活性新時代:

Matias (Patak) 推出了環境 API,這是一項旨在增強 Vite 靈活性和效能的重大演變。此API允許開發人員在單一Vite專案中定義多個環境(例如:客戶端、伺服器、邊緣),從而簡化開發和部署流程。他注意到自 ViteConf 第一年以來,Nuxt、Remix 和 TanStack 等元框架的湧入。
演講的主要內容包括:

  • 生態系統擴充:Vite 現在支援 Angular、Redwood、Remix、TanStack Start、Waku、Ember 和 Meteor,其基於 ESM 的無捆綁設計和 Rollup 插件 API 是其成功的核心。
  • 簡化的SSR和統一配置:Vite採用Rollup的插件API和受SvelteKit啟發的SSR結構簡化了設置,確保了開發和生產環境的一致。環境 API 允許開發人員在一個位置配置客戶端、SSR 或邊緣環境。
  • 環境 API 亮點: 每個環境(例如客戶端、SSR)現在都有自己的模組圖,可以使用新指令 vite build app 在單一設定中啟用多個環境。主要優點包括支援多環境配置、改進的工具整合(例如 Miniflare)以及增強的框架插件支援。 Patak 最後討論了 Vite 6 對向後相容性的關注以及社群回饋對於進一步完善環境 API 的重要性。

教學套件:

Tomek 推出了 TutorialKit,這是一個創新的開源工具集,用於重新定義 JavaScript 生態系統中的互動式教學課程建立。為了解決目前文件的局限性,TutorialKit 提供了精心策劃的實踐學習體驗,將使用者指南與結構化演示和練習相結合。
TutorialKit 由 WebContainers 提供支持,基於 Svelte、Angular 和 Nuxt 等框架的見解而建構。透過一個命令 npm createtutorial,開發人員可以快速產生一個完整的教程專案——在不到一分鐘的時間內完成課程描述、程式碼片段和即時預覽。
TutorialKit 是高度可自訂的,提供深色和淺色主題以及互動式終端,讓學習者能夠充分參與材料。該工具使開發人員、教育工作者和社群等能夠直接在瀏覽器中創建更具吸引力的教育資源。

pkg.pr.new:

Mohammad 推出了 pkg.pr.new,這是一個供 npm 庫維護者和用戶預覽未發布的分支、修復或功能的工具,無需複雜的設定。使用簡單的指令,例如:
npm 我 https://pkg.pr.new/${owner}/${repo}/${package}@{commit}
開發者可以立即測試特定版本,繞過持續發布等繁瑣方法。
下一步包括與 ESM.sh 整合以提供 CDN 支援和自訂 UI,將 pkg.pr.new 的功能擴展到 Deno 和 Vue Playground 等環境。

ViteConf Innovations, Announcements, and the Road Ahead

在本節中,我們將探索使 Vite 更具適應性的新整合。從 Angular 支援到增強的測試和 CI 工作流程,這些更新揭示了 Vite 如何擴大其覆蓋範圍並簡化開發者體驗。

使用 Storybook 和 Vitest 進行元件測試:

Chromatic 的 Storybook 維護人員 Yann Braga 推出了與 Vite 和 Vitest 的重要新集成,改變了 UI 組件的開發和測試。這些更新引入了 Vitest 插件,可將 Storybook 故事轉換為功能測試,無需額外的測試案例即可輕鬆增加程式碼覆蓋率。該外掛程式的可視化調試功能可讓開發人員從 CI 環境中即時檢查失敗的測試,從而促進無縫的團隊協作。
在版本 9 中,Storybook 計劃將視覺、可訪問性和功能測試統一到一個有凝聚力的 UI 中,並過渡到僅 ESM 版本,以減少安裝大小並提高效能。這些進步強化了 Storybook 對高效、簡化的前端工作流程和全面組件測試的承諾。

與 Nx 一起讓您的 Vite 專案飛起來

Nx 資深工程師 Katerina Skroumpelou 強調了 Nx 為 Vite 專案帶來的效率。她首先討論了 Nx 如何優化 CI 工作流程並自動執行複雜任務,從而使建置流程更快、更簡化。
接下來,她示範如何在 React Vite 專案中使用 Nx。該演示展示了 Nx 如何透過快取和 Nx 雲端整合等功能來增強效能。 Nx Cloud 支援擴展和任務重播,提供並行執行以提高速度。也新增了「nxaffected」指令,僅針對程式碼庫修改部分智慧運行任務,進一步優化 CI。
Katerina 強調,Nx 外掛程式(例如 ESLint 和 Vite 的外掛程式)可以簡化遷移並無縫維護程式碼,而不會破壞現有結構。最後,她展示瞭如何為 CI 設定 GitHub Actions,展示了 Nx 跨代理程式高效分配任務的能力。

使用Vite Ruby

顧問公司 Evil Martians 的營運者 Irina Nazarova 分享了 Vite Ruby 如何改變 Rails 應用程式中的開發人員體驗,為 Rails 的「No Build」方法提供了更好的替代方案。 Vite Ruby 已在 Power Home Remodeling Group 和 ClickFunnels 等公司成功實施,實現了更複雜的前端設置,同時保持了 Rails 開發人員友好的理念。

透過Node API練習Vite和Vitest

Bit 軟體工程師、Vue.js Conf 團隊成員趙錦江討論了 Bit 從 Webpack/Jest 到 Vite/Vitest 的過渡。此開關允許具有整合測試的自訂開發環境、最佳化的建置和測試工作流程以及透過 Node API 增強的靈活性,從而促進了組件驅動的開發。

ViteConf Innovations, Announcements, and the Road Ahead

在本節中,我們將了解 Vite 如何為 SolidJS、Svelte 和 Remix 等主要框架提供支援。這些進展展示了 Vite 如何根據每個框架的需求推動新功能和效能改進。

跨越網路鴻溝

SolidJS 的創建者 Ryan Carniato 分享了 SolidStart(5 月達到 1.0 版本)如何發展以統一客戶端和伺服器開發。 SolidStart 基於 Vite、Vinxi 和 Nitro 構建,引入了伺服器功能,並成為第一個具有簡化、無路由器架構的 JavaScript 框架,實現了令人印象深刻的輕量級 4.7KB 捆綁包大小。
在 Chrome 團隊的資助下,Ryan 和 Alexis 開發了 Seroval,這是一個強大的序列化工具,能夠處理非同步資料和串流。這帶來了一項重大突破:單次突變,它將操作和數據獲取有效地結合到一個無縫請求中。他們透過互動式 Trello 看板示範示範了這個概念,展示了效能提升。
Ryan也強調了Vite生態系統對於實現快速原型的重要性,並強調了它對Solid 2.0發展的影響。

Rollup 的演變:關注性能和現代語法

Lukas Taegert-Atkinson 介紹了 Rollup 最近和即將推出的增強功能:

  • 透過 Rust 遷移實現效能升級: Rollup 與 Rust 的整合將捆綁速度提高了 20%,並將記憶體使用量減少了 5%。接下來的步驟包括用於更快載入的二進位快取和非同步外掛程式解析 API。
  • 優化的 Tree-Shaking: Rollup 的 Tree-Shaking 已經過改進,可以更有效地刪除未使用的程式碼,並對函數參數、動態匯入和物件屬性進行最佳化。
  • 擴充語法支援: Rollup 現在支援明確資源管理、裝飾器和本機 JSX,並且即將提供潛在的 TypeScript 支援。 Rollup 對效能、現代語法支援和無縫開發人員體驗的承諾鞏固了其作為領先 JavaScript 捆綁商的地位。隨著它的發展,我們可以期待更強大的功能和最佳化。

Vite 如何讓 Remix 變得更好

Pedro Cattori 和 Mark Dalgleish 介紹了將 Remix 遷移到 Vite 所帶來的改進。
Pedro 專注於伺服器程式碼隔離,解釋了他們如何擺脫依賴 treeshaking 來從客戶端套件中刪除伺服器程式碼。相反,他們實作了明確 Remix 轉換並引入了 .server 檔案後綴,當伺服器程式碼可能洩漏到客戶端時,這會提供明確的建置時錯誤。
Mark 介紹了 CSS 處理改進,展示了它們如何從 Remix 原始的基於 URL 的 CSS 導入演變為利用 Vite 的內建功能。這包括透過 Rollup 實現更好的 CSS 分塊,以及使用 Vite 的 URL 查詢字串進行 CSS 導入的開發模式解決方案,確保開發和生產之間的行為一致,同時避免樣式閃爍。
這些變化為 Remix 框架帶來了更好的開發者體驗、更穩健的程式碼分離以及更有效率的 CSS 處理,展示了 Vite 遷移如何推動他們改進核心架構。

Qwik - 魔法背後

Shai Reznik 以有趣、俏皮的介紹開始他的演講,將自己描述為“傳奇表演者”,對他的技術能力有著令人印象深刻的說法。
在演講中,Shai 重點介紹了 Qwik,這是一個 JS 框架,旨在透過消除水合作用來優化應用程式效能。與傳統的伺服器端渲染框架不同,傳統的伺服器端渲染框架依靠水合作用,透過在客戶端重新運行 JS 來使應用程式具有互動性,Qwik 使用「JavaScript 流」。此過程將應用程式分解為微小的片段,在伺服器端渲染期間對應用程式的結構和事件偵聽器進行編碼。然後,這些片段被傳送到客戶端,Qwik 在後台緩衝必要的程式碼。因此,一旦使用者與其交互,應用程式就會變得具有交互性,而無需等待 JS 載入。
Shai 解釋說,Qwik 會自動處理此過程,無需動態導入和延遲載入等手動最佳化。這可以透過加快載入時間來改善使用者體驗和搜尋引擎優化 (SEO)。他還強調了 Qwik 的無縫擴展能力,使其既適用於簡單的行銷網站,也適用於複雜的應用程式。 Shai 向觀眾保證 Qwik 很穩定,擁有不斷發展的社區和生態系統,包括身份驗證、測試和部署的整合。
此外,Shai 還引入了未來的功能,例如預測緩衝、AI 驅動的最佳化(如死程式碼消除)和自動重構,旨在進一步簡化開發流程並提高應用程式效能。

Volar.js:它是如何運作的以及下一步是什麼

Volar.js 的創建者Johnson Chu 推出了一個突破性的框架,用於構建支援跨各種環境的嵌入式語言的語言工具,例如Vue.js、React、Svelte 以及集成在Vite 生態系統中的工具。 Volar.js 現在已被廣泛採用,強調效率和模組化,使其成為優化開發工作流程的重要組成部分,特別是在使用 Vite 建置的專案中。
Johnson 分解了 Volar 的架構,強調:

  • 語言核心模組,處理基本操作。
  • 語言服務模組,管理嵌入式程式碼並公開在 Vite 支援的專案中有效使用的 API。
  • 插件層,支援客製化和高效的程式碼轉換,這對於像 Vite 這樣的框架至關重要。 Volar和Astro的核心成員Erika討論了Volar過去一年的進展,強調了讓Vite用戶受益的改進。該團隊推出了新功能、增強了效能並解決了錯誤,為 Volar 的穩定性做出了貢獻,並使其成為基於 Vite 開發的強大工具。

Svelte 5:超越組件

Svelte 團隊的 Rich 宣布對 Svelte 5 進行重大重寫,旨在解決 Svelte 反應式系統的核心限制,儘管它在開發人員中很受歡迎。他將 Svelte 目前的結構概括為四點:

  • 充當產生普通 JavaScript 的編譯器。
  • 使用隱式、基於元件、編譯器驅動的反應性。
  • 有局限性,例如無法追蹤函數內的反應性、大型物件的處理效率低下以及需要手動數組突變更新。
  • 反應變數僅在組件的頂層起作用。 然後他介紹了 Svelte 5 中的五個關鍵變化:
  • 引入「符文」以實現顯式、通用、運行時驅動的細粒度反應性。
  • 啟用跨組件的響應式狀態共用。
  • 採用基於訊號的反應性,並透過編譯改進人體工學。
  • 聲稱比其他框架具有性能優勢。
  • 旨在簡化學習曲線並減少程式碼。 此外,Rich 還預覽了即將推出的SvelteKit 與Vite 6 環境API 的改進,這將允許開發人員在本地開發期間利用特定於平台的API(例如Bun SQLite),並在單一應用程式中混合不同的伺服器運行時。

Ember 與 Vite 的建造之旅

Chris Manson 討論了 Ember.js 這個已有 13 年歷史的前端框架如何透過 Vite 整合不斷發展。 Ember 的遺留建置系統 Broccoli 對程式碼分割等現代最佳化提出了挑戰。為了解決這個問題,引入了 Embroider 來彌合 Ember 的遺留建造系統和現代捆綁器之間的差距。它將 Ember 的傳統西蘭花樹預處理為更清晰的結構,可以由新的捆綁器處理。 Embroider 的早期版本可與 Webpack 配合使用,但不穩定,需要進一步努力使其與 Vite 相容。
關鍵的挑戰是調整 Vite 的模組優先方法,使其與 Ember 較舊的基於 AMD 的模組配合使用。該解決方案涉及重新構建構建過程,其中 Vite 使用 Ember 插件驅動構建,而不是運行 Vite 的 Ember CLI。 Embroider Vite 插件的創建是為了處理模組解析和元數據,確保更順暢的整合。
其成果是為 Ember 應用程式提供了一個使用 Vite 建置的工作系統,我們正在努力使其成為新專案的預設體驗。

ViteConf Innovations, Announcements, and the Road Ahead

在本節中,我們將討論將 Vite 性能推向新高度的工具和技術。關於 Nitro v3、Rollup 中的 Rust 整合以及本地優先 SQLite 應用程式的討論揭示了建立更快、更有效率的應用程式的策略。

Rust 的力量:美化網絡

CrabNebula 的X 主管、Tauri 工作小組和SolidJS DX 團隊的主要貢獻者Atila 推出了Taurify,這是一種新的SDK,旨在使用Tauri 技術將Web 應用程式轉換為本機桌面和行動應用程式。
五個主要特點:

  1. 簡單整合:在開發模式下作為包/板條箱無縫工作。
  2. 最佳化建置:透過無線更新將建置時間從幾分鐘縮短到幾秒。
  3. 開發者工具:具有調試功能和熱模組替換功能。
  4. 雲端整合:支援自動化部署和全面的發布管理。
  5. 生產就緒:最佳化捆綁包大小並有效管理應用程式更新。

現場示範:

  • 簡單應用程式(Solid Hacker News):Atila 演示了基本的 Taurify 集成,包括 JSON 配置、即時開發功能和部署過程。
  • 複雜應用程式(Mastodon 用戶端):他展示了 Taurify 的功能,展示了與複雜程式碼庫的平滑整合和高效的雲端部署。

神奇地優化你的字體

Nuxt 核心團隊負責人 Daniel Roe 提出了使用 Vite 和 Nuxt 優化 Web 字型效能的創新方法。他解釋了網頁字體的挑戰,例如佈局變化和效能問題。 Roe介紹了3種工具:

  • Fontaine: 一個現有工具,可在建置時將字體規格注入到 CSS 中。
  • Unifont: 一個新的開源工具,用於統一存取字型提供者 API。
  • Nuxt Fonts: 一個基於兩者構建的零配置模組,可自動處理字體優化,透過在本地提供字體來確保隱私和效能。

Daniel 也強調了 Vite 的優勢,特別是其多態性,可以實現 Nuxt 等框架與 Vite 團隊之間的無縫協作。

使用 Analog 建立下一個 Angular 元框架

AnalogJS 的創建者和 NgRx 維護者 Brandon Roberts 介紹了 AnalogJS,這是一個基於 Vite 構建的 Angular 元框架。他宣布發布 AnalogJS V1.8,旨在透過 Vite、Nitro 和 Nx 等工具增強 Angular 生態系統,打造全端解決方案。 Analog 利用現代 Angular 功能,例如獨立元件和增強的伺服器端渲染 (SSR),提供基於檔案的路由、靜態網站產生和整合 API 路由。
主要功能和整合:
SSR 與靜態產生: 支援各種平台(Node、Edge、Vercel 等)。
API 路由: 輕鬆定義伺服器端點以及元件。
測試工具: 與 Vitest 和 Playwright 集成,使 Angular 與現代測試實踐保持一致。
Storybook 及更多: Vite 支援與 Storybook 等元件庫整合。
羅伯茨還透露了實驗性功能,包括模擬單一檔案元件 (SFC) 和表單操作,旨在簡化客戶端-伺服器資料處理。

表現!表現!表現!

Bjorn Lu 以幽默的方式開場,開玩笑地談到了“性能神話”,然後深入探討了提高 Web 應用程式效能的策略。他們強調了三個關鍵面向:

  1. 效率:減少不必要的操作,例如使用簡單的循環而不是map/filter/reduce。
  2. 極簡主義:僅使用所需的函式庫部分,在更簡單的情況下編寫自訂程式碼。
  3. 足智多謀:利用系統資源,例如工作執行緒來並行化任務。 為了找出瓶頸,發言人建議將「模糊」的用戶報告轉化為具體的、可操作的問題。他們示範如何使用 Chrome DevTools 和 npmgraph 等分析工具。 演講重點介紹了幾個最佳化案例研究:
  4. 透過針對性的分析將打包速度提高 4 倍
  5. 使用工作執行緒來加快 CSS 處理
  6. 透過動態運算減少Rollup的記憶體使用 發言者強調,隨著時間的推移,微小的、漸進的改進會變得更加複雜。但他們警告要平衡性能提升與可維護性。

使用 Vite 建置 Web Polyliths

Igor 是Cloudflare 的軟體工程師,也是Angular 的前貢獻者,他討論了「Web 多片」的概念,作為傳統整體式Web 應用程式的替代方案(多片應用程式由許多元件組成,獨立運行以提高靈活性和魯棒性)。他強調了多片應用程式的好處,多片應用程式由多個可以在不同上下文中運行的獨立組件組成,與通常具有單入口點並可能導致性能問題、效率低下和安全風險的單片應用程式形成對比。
重點包括:
單體應用程式的當前狀態: 如今的許多應用程式(例如 SPA 和 Node.js 應用程式)都是單體應用程序,從而導致效能降低和脆弱性增加等各種缺點。
多片架構的優點:這些應用程式可以更快、更安全、更易於理解,因為它們允許單獨部署和更少的共享狀態,從而減少攻擊面。
複雜性考量: 雖然多區塊具有明顯的優勢,但它們帶來了配置、建置和部署的複雜性。然而,開發人員經常無意中創建多塊,尤其是在全端應用程式中。
Vite v6 的作用: Vite v6 中新的環境API 透過啟用多個環境和獨立建置而簡化了多片應用程式的創建,而不會帶來巨大的複雜性,並提供熱模組替換(HMR)等功能。

Nitro v3 初探

UnJS 和 Nitro 的創建者 Pooya Parsa 推出了 Nitro v3,這是一個伺服器工具包,用於使用強大的 API 建置與部署無關的伺服器。 Nitro 簡化了任何提供者的應用程式編譯和捆綁。
關鍵組件:

  • 運行時功能:透過檔案系統結構進行 API 路由、SSR 的內建渲染層、儲存系統、任務運行器、快取和嵌入式資料庫。
  • Builder API:將應用程式邏輯與 Nitro 的生產功能捆綁在一起,由 Rollup 提供支援。它還包括一個可快速重建的開發伺服器,並計劃切換到 Vite 以獲得更快的效能。

Nitro v3 優先考慮與 Web 標準和邊緣平台的兼容性,同時保持 Node.js 支援。新的 API 簡化了伺服器定義並增強了可組合性、可觀察性和可測試性。
Pooya 也發布了 H3 v2,與 Nitro v3 一起發布,具有更小的捆綁包大小和更快的響應處理速度,完全基於 Web 標準。未來的更新將探索 Vite 整合和混合原生 Polyfill,以在邊緣平台上實現更好的相容性和效能。

ViteConf Innovations, Announcements, and the Road Ahead

在本節中,我們將介紹旨在簡化除錯和測試的更新。 Chrome DevTools、Vitest 和 Vue Devtool Kit 中的新功能為開發人員提供了更大的控制權,有助於簡化開發流程。

您會喜歡的四個令人驚嘆的開發工具更新

Chrome DevTools 團隊的 Jecelyn 介紹了四個基本工具,可以實現更快、更有效的調試:

  1. 持久元素檢查:使用「模擬聚焦頁面」在檢查時保持下拉清單等元素可見。連結影片中提供了更多技巧。
  2. 人工智慧驅動的錯誤解決方案:使用 Gemini,點擊錯誤上的新燈泡圖示即可獲得人工智慧產生的解釋和客製化修復。
  3. 增強的效能面板:核心網路重要指標現在無需記錄即可即時更新,開發者可以比較本地和真實世界的使用者資料。
  4. 具有網路覆蓋的 API 模擬:在後端準備就緒之前模擬 API 對測試 UI 的回應,並在本地儲存覆蓋以便於編輯。

Vitest:徹底改變 JavaScript 測試

在一系列的3個技術深度探討中,Vitest核心團隊成員Vladimir(Vitest和Vite團隊成員)、Ari(Vitest核心團隊和StackBlitz工程師)和Misha Kaletsky(expect-type作者)分享了有關Vitest的更新,一個快速而現代的JavaScript 測試框架,在過去的一年裡,每週的下載量增加了三倍,達到約600 萬次。

維測2.1亮點:

  • 瀏覽器模式:用於在瀏覽器中執行測試的重大改進和新的 UI,可以在真實的瀏覽器環境中測試前端程式碼。
  • 覆蓋率:增強的覆蓋率功能,包括瀏覽器模式的V8覆蓋率,提供更快、更準確的覆蓋率報告。
  • 類型測試:整合expect-type以進行編譯時類型檢查。
  • VS 程式碼擴展: 重寫的擴展,可實現更快的效能、偵錯和覆蓋視覺化。 主要功能與改進:
  • 更快的測試執行:最佳化的效能和快取機制。
  • 改進的偵錯體驗: VS Code 擴充中增強的偵錯功能。
  • 全面的覆蓋率報告:詳細的覆蓋率報告以及精細的見解。
  • 無縫類型檢查:整合期望類型​​以進行穩健的類型驗證。
  • 使用者友善的使用者介面: 視覺上吸引人且直覺的使用者介面。

講座也展示了這些功能的實際演示,強調了 Vitest 的易用性和高效性。演講者強調了使用 Vitest 進行現代 JavaScript 和 TypeScript 開發的好處,特別是它能夠加速開發工作流程並確保程式碼品質。

Vue.js 生態系中的開發工具套件

Vue.js 核心團隊成員 Guillaume Chau 介紹了 Devtool Kit,這是一個統一框架,用於簡化和增強跨 Vue.js、Nuxt 和潛在其他框架的調試工具的開發和兼容性。功能豐富但不相容的 Nuxt 和 Vue Devtools 促使了 Devtool Kit 的創建,旨在將它們統一在一組通用的實用程式和 API 下。

主要目標是標準化實用程式和API,以允許Devtools 之間的無縫互通性,並促進為任何框架(不僅僅是Vue.js 或Nuxt)創建新的Devtools,同時支援各種環境,例如瀏覽器、Node.js 伺服器或獨立應用程式。

開發工具套件有四個模組:
主模組:註冊頁面模組並控制整體功能。
頁面模組:在使用者應用程式上下文中操作,允許與應用程式狀態互動。
視圖模組:管理可見介面,向使用者顯示資訊。
伺服器模組: 在開發過程中處理伺服器端互動。
Devtool Kit 具有使用 postMessage 和 WebSockets 等技術的雙向類型通訊系統,無論上下文如何,都可以實現模組之間的無縫互動。

我們不要忘記模組化的“小程式”,它提供了高度客製化的 Devtools 體驗,整合了 Vue.js、Nuxt 甚至 Pinia 或 Tailwind 等第三方工具的功能。

Node.js 模組載入器中的新功能和即將推出的功能

Joyee,Node.js 貢獻者,介紹了 Node.js 模組載入系統的最新和即將推出的改進,重點是更好的 ESM 支援和開發人員體驗。

發布的功能:

  1. require() 中的 ESM(實驗性)
    o CommonJS 模組現在可以 require() ES 模組。
    o 限制:沒有頂級等待支援。
    o 即將進入 Node.js 23 穩定版。

  2. 開發人員改進
    o 自動偵測 .js 檔案中的 ES 模組。
    o 模組編譯快取以加快載入速度。
    o 內建模組偵測,無需頂級等待。
    o 用於定位有問題的頂級等待程式碼的工具。

即將推出的功能

  1. 套件管理:
    o 新的出口條件以防止雙重包裝問題
    o 更好的 CommonJS 到 ESM 遷移支援

  2. 開發者工具:
    o 同步模組載入器鉤子
    o 用於環境設定的運行時設定檔

重點是改進 ESM 支持,同時保持向後相容性和開發人員體驗。

ViteConf Innovations, Announcements, and the Road Ahead

在本節中,我們將深入探討 Vite 的實際應用。 Excalidraw、Shopify 和其他專案的案例研究凸顯了 Vite 的速度、靈活性和開發人員體驗如何在生產環境中發揮作用。

將Excalidraw從CRA移轉到Vite

Excalidraw 的維護者 Aakansha 討論了將專案從 Create React App (CRA) 遷移到 Vite 的經驗,這是由於需要更快的建置和 HMR 時間、更大的靈活性和更好的維護。
2021 年 Patak 將 Vite 整合到 Excalidraw 後,遷移過程開始,引起了團隊的注意。由於 Vite 更快的建造時間、更好的熱模組替換以及不斷增長的社區,他們決定遷移,面臨的挑戰是:

  • 檢定: 在社群支援下遷移到 Vitest,使用 vitest-canvas-mock 進行基於畫布的測試。
  • PWA 支援: 使用 vite-plugin-pwa 實現了語言環境和字體的緩存,解決了自訂 Rollup 配置的問題。

但是,團隊在部署後遇到了一個主要問題 - HMR 對於大檔案的效能顯著下降。這對開發者體驗產生了負面影響,導致了恢復。經過調查並刪除插件後,他們解決了問題並成功部署。
Excalidraw 的 Vite 遷移在社群的大力幫助下完成,增強了開發者體驗並簡化了建置。

在 Shopify 上擴充 Vite:

Jason Miller 開發人員致力於 Shopify 最大的 React 程式碼庫(500 萬行 TypeScript 和 800 條路由),Jason 強調了從 Webpack 遷移到 Vite 的好處。此遷移使啟動時間縮短為 15 秒,將 HMR 效能從 12 秒降低到 5 毫秒,並將模組數量從 18,000 個最佳化到 2,300 個。這些改進使團隊能夠轉向本地開發,而不是依賴基於雲端的 IDE。

使用 Vite 進行視頻遊戲開發

Christoph Nakazawa,遊戲開發者 Christoph 解釋了 Vite 如何幫助他建立 Athena Crisis,一款包含 214,000 行 JavaScript 的跨平台遊戲。 Vite 透過 vite-plugin-pwa 提供 30ms 熱重載和離線支持,並允許前端和後端程式碼無縫捆綁,從而實現跨平台的快速 3 分鐘部署週期。

Viteconf 3D拼圖是如何建構的

Storyblok 的開發體驗工程師、TresJS 函式庫的創建者 Alvaro Sabu 在 ViteConf 登陸頁面分享了建置 3D 拼圖的歷程。這個互動式謎題是使用基於 Vue 的 3D 庫 TresJS 創建的,用戶可以透過整合程式碼編輯器來解決。
阿爾瓦羅描述了設計拼圖的關鍵步驟:創建四面體和八面體塊,使用四元數和動畫幀實現旋轉邏輯,並將其無縫整合到網頁中。一個突出的功能是使用 WebContainers 在頁面中嵌入 Vite 開發伺服器,允許使用者即時編輯拼圖背後的 JavaScript。
阿爾瓦羅還提供了有關克服挑戰的見解,例如使用臨時小組進行連續輪換和優化性能。該專案強調了 TresJS 和 WebContainers 創建沉浸式、可編輯 3D Web 體驗的能力。

ViteConf Innovations, Announcements, and the Road Ahead

在本節中,我們將討論 Vite 生態系統的未來及其社區重點。關於文件、開源原則和框架融合的討論強調了 Vite 在建立協作、前瞻性開發者社群方面的作用。

網路的未來是本地優先

Ben Holmes 推出了「本地優先」應用程序,展示了它們完全在瀏覽器中運行的潛力。他使用 Astro 演示了這一點,並強調如何使用 SQLocal 等程式庫在客戶端管理 SQLite,從而將資料安全地儲存在瀏覽器中。關鍵要點是:

  1. 文檔編輯器:一個簡單的編輯器,允許使用者直接在瀏覽器的 SQLite 資料庫中建立、編輯和保存文檔,確保資料持久性,無需外部儲存。
  2. 搜尋功能:
    基本搜尋:最初使用SQL的LIKE運算子實現文字搜尋。
    AI 驅動的搜尋:整合了
    的通用句子編碼器 TensorFlow 用於基於相似性的智慧搜索,使用戶即使在術語模糊的情況下也能找到相關文件。

  3. 技術見解:討論了在瀏覽器中載入大型 AI 模型等挑戰以及使用 Web Worker 來提高效能的重要性。

  4. 使用者體驗:此示範採用瀏覽器原生元素來實現可存取性和具有視圖轉換的流暢動畫,從而增強搜尋體驗。
    最後,Ben 強調了本地優先應用中設備端 AI 運算令人興奮的未來。

從框架到原語

Netlify 執行長 Mat Bilmann 概述了 Web 開發從整體結構到 Jamstack 和現代框架的轉變,強調了前端和後端解耦以獲得更大靈活性和可擴展性的好處。雖然 Gatsby、Next.js 和 Nuxt.js 等早期框架簡化了工作流程,但它們也增加了複雜性。
Bilmann 現在主張過渡到更小的、可組合的原語,以允許更客製化的 Web 應用程式。 Vite 在這一轉變中發揮關鍵作用,為 Astro、TanStack Start 和 Vike 等新框架的誕生提供了堅實的基礎。這些框架優先考慮簡單性、模組化和效能,使開發人員能夠建立高效且可維護的 Web 應用程式。

融合 Web 框架

Google Angular 產品負責人 Minko Gechev 討論了 Angular 和 React 之間的相似之處,以及前端框架的未來趨勢。他解釋了這兩個框架儘管使用不同的語法(模板與 JSX),卻如何利用類似的方法進行變更檢測和優化。
Minko 演講的核心焦點是 Signals 的介紹,這是 Vue、Solid 和 Svelte 等框架也使用的原語。 Angular 的 Signals 實作透過追蹤資料依賴性並最大限度地減少不必要的重新渲染來提高效能。
Minko 強調了 Angular 與 Google Wiz 框架的合作,旨在共享效能最佳化並增強開發人員體驗。值得注意的例子包括事件重播,它可以有效地解決互動性差距,以及增量水合作用,它可以提高頁面載入效能。
他預測框架將繼續向細粒度的程式碼載入和事件重播靠攏,以增強使用者體驗,在選擇框架時強調穩定性、生態系統和個人喜好。

Vite生態文化

OpenSauced 計畫背後的關鍵人物 Brian Douglas(B Dougie)討論了 Vite 生態的文化和發展。他強調,Vite 現在每週的下載量達到 1500 萬次,這是一個令人印象深刻的里程碑。

Dougie 也介紹了StarSearch,這是他的團隊開發的一款工具,用於識別Vite 社群中的關鍵貢獻者,重點關注Anthony Fu、Patak、Brandon Roberts 和Toby 等人物在推動Vite 開發和採用方面所發揮的作用。 Dougie 最後引用了 Evan Yu 的一句話,強調偉大的貢獻者是 Vite 成功的關鍵,而 Vite 對開發者體驗和問題解決的關注是其在前端生態系統中發展的核心。

安東尼的開源之路 II:開源的進步之路

Anthony Fu 在演講中探討了開源工具開發的漸進性概念。以下是主要要點:
怎樣才是好的開源工具?

  • 解決問題:與手動方法相比,好的工具可以顯著減少工作量。
  • 易於學習和使用:較低的學習曲線鼓勵更廣泛的採用。
  • 社群驅動的改進:使用者回饋和貢獻推動持續改善。 進取的重要性:
  • 漸進式入門:初學者應該可以輕鬆使用工具並輕鬆學習。
  • 漸進式整合:靈活適應和整合各種場景是關鍵。
  • 漸進式功能:強大的功能應該逐步引入,讓使用者隨著時間的推移加深知識。
  • 漸進式重大變更:應順利引入重大變更,並提供向後相容的遷移路徑和選項。 Anthony 也提供了 Vue、Nuxt.js 和 Vite 等工具的漸進性範例,解釋了每種工具如何遵循漸進式路徑來增強使用者體驗和適應性。

文件作為社區建設

Sarah Rainsberger 的演講強調了文件如何成為社區發展的強大但經常被忽視的工具。投資於維護良好且易於存取的文件可以培養一個積極參與、可持續發展的社區,從而從整體上加強專案。
她解釋了文件如何培育活躍的開源社群:

  • 強大的社群對於專案的健康至關重要 - 更多的使用者=>更多錯誤回報=>回饋和潛在貢獻者。
  • 文件是社區建設中未充分利用的資源,因為與代碼貢獻相比,它的進入門檻較低。
  • 文件有許多重要的用途,例如教育、入門和行銷,可以減輕維護人員的負擔。
  • 確定現有的社群幫助者並邀請他們直接改進文檔,即使是小修復。
  • 譯者是有價值的貢獻者,他們發現需要澄清的不清楚的段落。
  • Doc 的貢獻者可以作為未來的程式碼貢獻者加入,展示專案可用性。
  • 提供明確的貢獻指導、簡單的任務和公眾認可,以鼓勵更多參與。
  • 投資高品質、社群建構的文件對於開源專案的發展和永續性至關重要。

ViteConf Innovations, Announcements, and the Road Ahead

在本節中,我們將探索推動 Vite 實現新功能的開創性框架。關於 Vike、WebAssembly 整合和零到一的演講展示了 Vite 如何實現塑造下一代 Web 應用程式的創新方法。

探索框架設計新領域

重塑框架,從零到一
Nathan Wienert 推出了“One”,這是一個新的 React 框架,它具有兩個主要功能:

  1. 無縫雙服務: Vite 可以同時服務 React Native 和 Web 應用程序,為兩種環境提供檔案系統路由和熱重載。
  2. 本地優先整合:它透過與 Zero 整合來強調本地優先方法,提供支援 Web 和本機應用程式之間程式碼共享的資料管理解決方案。

設定非常簡單:使用 npx one 建立一個 One 應用程序,它充當 Vite 插件,方便配置。支援多種渲染模式(伺服器端、靜態或客戶端),並使用 Tamagui 增強 Web 功能以最佳化樣式。

此框架有效處理伺服器和用戶端之間的資料取得和同步,使用 SWC 取代 Babel 以加快建置時間。透過特定於平台的擴展,它可以跨裝置提供獨特的體驗,展示其靜態和動態應用程式的多功能性。

Nathan 的會議強調了 One 的目標,即無縫連接 Web 和本機應用程式開發,使其立即可用,零即將公開測試版。

JavaScript 作為 Wasm 的來源和目標

Natalia Venditto,Microsoft Azure 的 JavaScript 開發體驗主要負責人,討論了 WebAssembly 如何在 JavaScript 環境(客戶端和伺服器端)中實現高效能程式碼執行。
關鍵技術點

  1. WebAssembly 基礎
    o 將程式碼從 C /Rust 等語言編譯為可移植的二進位。
    o 透過 WebAssembly 綁定與 JavaScript 無縫整合。
    o 更有效率地運行運算密集型操作。

  2. 開發工具
    o 用於 WebAssembly 整合的 Vite 插件。
    o 瀏覽器和 VS Code 中的偵錯支援。
    o 對已編譯程式碼進行直接原始碼級偵錯。

  3. 組件模型
    o 新架構提供更好的跨語言支援。
    o 處理數字以外的複雜資料型態。
    o 啟用 JavaScript 到 WebAssembly 編譯。

最後,她強調了 WebAssembly 在開發中的可移植性和組合性方面的潛力,並邀請開發者參與 Vite 生態系統中不斷發展的工具和插件。

Vike - 下一代前端框架

Rom Brillout 推出了 Vike,這是一款專為靈活性而設計的下一代前端框架。他解釋說,Vike 就像 Next.js 或 Nuxt,但具有高度可自訂的擴展,允許開發人員使用任何 UI 框架。例如,Vike 可以在同一專案中混合使用 React、Solid 甚至 Vue 2 和 3 來運行應用程式。它支援所有渲染策略(SPA、SSR 和 SSG),並與各種資料擷取方法(RPC、REST、GraphQL)整合。

關鍵的差異在於 Vike 在 MIT 授權下的開源模型。 Vike 不是傳統的商業模式,而是提供了一種獨特的方法,公司可以根據自己選擇的企業用途付費。目標是保持 Vike 100% 開源,提供可持續的商業模式,同時確保所有開發人員均可存取。儘管具有靈活性和自訂選項,Brillout 強調 Vike 已經可以穩定用於生產用途,並計劃很快發布 1.0 版本。

結論:

謝謝您看到我文章的結尾!我希望您覺得它內容豐富,並對 ViteConf 2024 令人興奮的發展有了新的見解。
這篇文章的發佈時間比計劃的要長一些,因為我只能在周六的時候寫它——但好事需要時間,對吧? ?

特別感謝我親愛的朋友幫我審閱和潤飾內容,以及所有鼓勵我發表的人。特別感謝 ChatGPT 和 Claude ?幫助我提高英語水平,我希望它能很好地表達。

這是我的第一篇技術文章,您的支持對我來說意義重大。我期待寫更多內容並繼續與開發者社群分享知識。
請隨時分享您的想法和回饋—我很樂意聽取您的意見!你可以在以下位置找到我:
X (Twitter):@Mohamed_LamineF 或 LinkedIn:mohamedlaminef。

ViteConf Innovations, Announcements, and the Road Ahead

以上是ViteConf 創新、公告和未來之路的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板