Qwik 1.0正式發(fā)布,追求極致性能的前端框架!
5 月 2 日,追求極致性能的前端框架 Qwik 正式發(fā)布 1.0 版本!Qwik 類似于 React,它也使用用 JSX 編寫的組件作為模板,主要區(qū)別在于其專注于在瀏覽器中傳輸最少的 JavaScript。
在 2022 年 JavaScript 明星項目的前端框架排行中,Qwik 排在第二位,僅次于 React。
Qwik 不依靠水合來為服務(wù)器上生成的頁面帶來交互性,而是使用一種稱為可恢復(fù)性的技術(shù)來提供即時交互的 HTML。它通過在 HTML 本身中序列化應(yīng)用的狀態(tài)來工作。該項目由 Mi?ko Hevery 領(lǐng)導(dǎo),他是 AngularJS 的創(chuàng)建者,他的口號是“為 Web 應(yīng)用增強 HTML”,Qwik 就是“HTML 優(yōu)先的框架”。
為什么需要一個新的框架?
React、Vue、Angular、Svelte、SolidJS 等框架及其元框架(Next.js、Nuxt、SvelteKit、SolidStart、Astro)通過提供強大的工具和抽象化簡了構(gòu)建復(fù)雜應(yīng)用的過程,從而革命性地改變了 Web 開發(fā)。這些框架激發(fā)了許多開發(fā)者創(chuàng)造出創(chuàng)新性的解決方案,提高了用戶和開發(fā)者的體驗,并提高了 Web 應(yīng)用的整體質(zhì)量。
Qwik從這些框架中吸取了很多靈感,利用它們的優(yōu)點提供快速、可擴展和可維護的解決方案,用于構(gòu)建 Web 應(yīng)用。在這些框架奠定的基礎(chǔ)上,Qwik 能夠為開發(fā)者提供強大的工具集,使他們能夠快速高效地構(gòu)建 Web 應(yīng)用,并保持高質(zhì)量和高性能。
隨著 Web 應(yīng)用變得越來越大,由于當(dāng)前的框架向客戶端發(fā)送過多的 JavaScript,其啟動性能會逐漸降低。將初始捆綁包大小保持在較小的范圍內(nèi)是一場永無止境的戰(zhàn)斗,并且通常會無法做到。
Qwik 向用戶提供即時應(yīng)用。這是通過保持初始 JavaScript 成本不變來實現(xiàn)的,即使應(yīng)用變得越來越復(fù)雜,Qwik 只為特定的用戶交互提供 JavaScript。這確保了 JavaScript 不會使瀏覽器崩潰,無論應(yīng)用變得多么龐大。
將其視為 JavaScript 的流式處理:
主要特性
Qwik 的理念是確保易用的路徑是高性能的路徑。這就是為什么Qwik默認提供以下解決方案:
開箱即用的用戶體驗
- 通過JavaScript流式傳輸實現(xiàn)即時加載:交付應(yīng)用,獲得優(yōu)秀的CWV分數(shù),并在應(yīng)用隨著時間變得更加復(fù)雜而維持這些分數(shù)。
- 推測性代碼獲取:在用戶需要的時候精確地交付所需的代碼,以確保即時的用戶交互,即使在網(wǎng)絡(luò)不可靠的低速移動設(shè)備上也是如此。
- 惰性執(zhí)行:Qwik的可恢復(fù)技術(shù)盡可能延遲在瀏覽器中執(zhí)行代碼,以保持瀏覽器的主線程自由并能夠響應(yīng)用戶交互。
- 優(yōu)化渲染時間:Qwik是響應(yīng)式的,意味著默認情況下只會更新絕對必要的內(nèi)容,而不會進行多余的更新。
- 數(shù)據(jù)獲取:從服務(wù)器開始獲取數(shù)據(jù),以防止“瀑布”式延遲。
極佳的開發(fā)者體驗
- 類似于JSX
- 基于目錄的路由:使用基于目錄的路由創(chuàng)建站點,這是行業(yè)中聲明路由的首選方式。
- 一流的數(shù)據(jù)訪問:Qwik通過數(shù)據(jù)加載器和表單操作可以輕松訪問服務(wù)器數(shù)據(jù),并且有100%端到端類型安全性和用戶輸入驗證。
- 中間件:以可移植方式聲明中間件邏輯,能夠部署到所有主要的托管提供商。
- 統(tǒng)一的執(zhí)行模型:通過Qwik,編寫前端和后端代碼自然地融合在單個應(yīng)用代碼庫和類型安全性中。默認情況下,Qwik 應(yīng)用在服務(wù)器和瀏覽器中均可執(zhí)行,但很容易將函數(shù)固定為始終在服務(wù)器端(server$())或始終在瀏覽器端執(zhí)行。
集成
Qwik 提供快速擴展的即用型集成,可以與您喜歡的庫和框架輕松集成。只需在命令行上運行npx qwik add
,然后從列表中選擇所需的集成即可:
- 一次編寫,任意部署:支持多個主流云托管服務(wù)商,包括Azure、Cloudflare、Google Cloud Run、Netlify、Node.js、Deno、Vercel等,而且這個列表還在不斷增長。以與托管提供商無關(guān)的方式編寫應(yīng)用,避免廠商鎖定。
- UI組件:選擇使用QwikUI、Papanasi UI或經(jīng)過實戰(zhàn)檢驗的UI類庫,如Material UI、ChakraUI、Radix或通過Qwik-React使用其他基于React的組件庫。
- 圖像優(yōu)化:使用 @unpic/qwik 和 qwik-image 對圖像進行優(yōu)化,以獲得最佳用戶體驗。
- 國際化:使用 $localize 和 qwik-speak 支持多語言交付應(yīng)用。
- 身份驗證:使用業(yè)界領(lǐng)先的AuthJS為應(yīng)用添加多種認證策略。
- CMS:Qwik 與 Builder.io 原生集成,可用于結(jié)構(gòu)化數(shù)據(jù)和組件級頭部內(nèi)容創(chuàng)建和發(fā)布。
- 樣式:Qwik 允許延遲加載和組件級樣式封裝。結(jié)合PostCSS、Vanilla Extract或Tailwind等流行解決方案,實現(xiàn)樣式需求。
- 測試:使用 Vitest 進行單元測試,使用 Playwright 和 Cypress 進行端到端測試。使用 Storybook 開發(fā)和測試組件。
- 企業(yè)準備:使用qwik-nx為企業(yè)規(guī)模的應(yīng)用和monorepo開發(fā)提供特殊的生成器和執(zhí)行器。
互操作性
Qwik-React 允許在 Qwik 應(yīng)用中懶惰地混合 React 組件。利用 Qwik 中現(xiàn)有的 React 生態(tài)系統(tǒng),使用 Qwik-React 逐步遷移到 Qwik,或者通過延遲水化部分應(yīng)用來加速 React 應(yīng)用。Qwik-react 將 island 架構(gòu)設(shè)計模式引入到 React 應(yīng)用中。
Svelte、Vue 和 Angular 包裝器正在由社區(qū)開發(fā)。
社區(qū)
Qwik 擁有一個由熱情的開發(fā)人員、熱情的貢獻者和全球支持用戶組成的多元化和包容性社區(qū)。這個社區(qū)充滿活力,不斷合作,分享想法,并突破框架可以實現(xiàn)的界限。
Qwik 的 GitHub Star 增長歷史:
參考:https://www.builder.io/blog/qwik-v1。