成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

從 Islands Architecture 看前端有多卷

開發 前端
今天,我們從被「Ryan」吐槽的Astro的理念 —— Islands Architecture出發,來看看前端到底有多卷。

大家好,我卡頌。

最近,Remix團隊的暴躁老哥「Ryan Florence」一連懟了好幾個友商框架,比如:

  • 噴SolidStart抄Remix的文檔。

圖片

  • 懟Next.js抄Remix的API設計。

圖片

  • 吐槽Astro、Qwik沒有什么新鮮理念

圖片

當然,這些推文發出不到一天就被老哥刪了。

我們今天不聊以上這些事兒的對錯。

我想問問「不常關注前端新輪子發展的同學」,此時你們的內心活動是不是:

這都是些啥框架?我咋一個都不認識?

今天,我們從被「Ryan」吐槽的Astro的理念 —— Islands Architecture出發,來看看前端到底有多卷。

Islands Architecture是什么

Islands Architecture(孤島架構)的概念最初是由「Etsy」的前端架構師 「Katie Sylor-Miller」 在 2019 年提出,并由Preact作者「Jason Miller」在islands-architecture[1]一文中推廣。

這是一套基于SSR(服務端渲染)的架構。要了解他的特點,我們需要先了解傳統SSR的缺陷。

在傳統SSR中,首屏渲染時,服務端會向瀏覽器輸出HTML結構。

當瀏覽器渲染HTML后,再執行前端框架的初始化邏輯,為HTML結構綁定事件,這一步叫hydrate(注水)。

當hydrate完成后,頁面才能響應用戶交互。

也就是說,只有當整個頁面所有組件hydrate完成后,頁面中任一組件才能響應用戶交互。

Chrome LightHouse跑分中的TTI[2](Time to Interactive,可交互時間)指標用于衡量「頁面變得完全可交互所需的時間」。

圖片

傳統SSR架構的頁面隨著應用體積變大,TTI指標會持續走高。

孤島架構的目的就是為了優化SSR架構下TTI指標的問題。

在孤島架構架構下,組件分為:

  • 交互組件
  • 首屏不可交互組件

比如在如下頁面結構中:

圖片

  • ?「首屏不可交互組件」包括Content、Advertisement、Footer(白色部分)。
  • 「交互組件」包括Header、Sliderbar、Image Carousel(彩色部分)。

「首屏不可交互組件」會像傳統SSR一樣向瀏覽器輸出HTML,而「交互組件」會在瀏覽器異步、并發渲染。

「交互組件」就像HTML海洋中的孤島,因此得名孤島架構。

孤島架構可以讓「交互優先級較高的組件」優先變得可交互,剩下的低優組件再慢慢hydrate。

如此,在頁面hydrate完成前,重要的組件已經可交互了,借此就能降低TTI指標。

孤島架構的現實意義在哪呢?比如,對于一個電商網站,顯然「立刻購買按鈕」的可交互性優先級高于「反饋按鈕」的可交互性。

SSR讓用戶能夠更早看到頁面,孤島架構讓頁面中重要的部分(立刻購買按鈕)可以更早被點擊。這背后,就是更高的購買率,更多的錢~~~

實現Islands Architecture的框架

在當前,實現孤島架構的全??蚣苤饕茿stro與Qwik。

Astro

Astro的特點是:作為全棧框架,主要把控整體架構,對實現具體業務所需前端框架沒有要求。

也就是說,開發者可以在Astro中使用React、Vue、Preact、Svelte等框架實現具體業務邏輯,甚至是在一個.astro組件中混用其他框架的組件。

比如,在下面例子中.astro組件中引入了React、Vue、Svelte三款框架的組件:

圖片

Qwik

Qwik的作者是builder.io的CTO 「mi?ko hevery」(同時也是Angular/AngularJS的發明者)。

圖片

mi?ko hevery

這款框架的特點是:超細粒度的孤島架構,且粒度是開發者可控的。

對于Astro,孤島架構適用的對象是組件。而在Qwik中,孤島架構最細的粒度是「組件中的某個方法」。

舉個例子,下面是HelloWorld組件(可以發現,Qwik采用類似React的語法):

圖片

對應頁面渲染效果:

圖片

打開瀏覽器Network面板,這個頁面會有多少JS請求呢?

由于這是個靜態的組件,沒有邏輯,所以答案是:沒有JS請求。

再來看看經典的計數器Counter組件,相比HelloWorld,增加了「點擊按鈕狀態變化的邏輯」,代碼如下:

圖片

對應頁面渲染效果:

圖片

打開瀏覽器Network面板,這個頁面會有多少JS請求呢?

答案還是:沒有JS請求。

注意這兩個組件的代碼中,定義組件使用的是component$,有個$符號。

在Counter中,onClick$回調也有個$符號。

在Qwik中,后綴帶$的函數都是「懶加載」的。

孤島架構的粒度有多細,就取決于$定義的多細。

比如在Counter中,onClick$帶$后綴,那么點擊回調是懶加載的,所以首屏渲染不會包含「點擊后的邏輯」對應的JS代碼。

在點擊按鈕后,會發起2個JS請求,第一個請求返回的是「點擊后的邏輯」:

圖片

第2個JS請求返回的是「組件重新render的邏輯」:

圖片

這兩段代碼執行后,Counter變為1。

圖片

審查元素會發現,點擊前,button on:click屬性中保存了「邏輯所在的地址」:

圖片

點擊后,會從對應地址下載JS代碼,執行對應邏輯。

React

為什么文章開頭暴躁老哥吐槽Astro、Qwik沒有什么新鮮理念呢,這是因為React很早就在朝著孤島架構的理念發展了。

在React中,這套理念被稱為Selective Hydration[3]。

具體來說,在SSR場景下,被Suspense組件包裹的組件會作為孤島架構下的「交互組件」。

前端有多卷

雖然孤島架構下的全??蚣苡斜姸嗪锰帲ㄊ灼龄秩究臁TI短),但并不是萬能的。

他比較適合「對首屏渲染速度、TTI要求高,但整體頁面交互不復雜」的場景,比如:

  • 電商頁面
  • 博客
  • 文檔

對于「重交互性」的Web應用(比如「后臺管理系統」、「社區」),更適合傳統的SSR方案(比如Next.js)或CSR方案(直接使用前端框架)。

可見,孤島架構的應用場景并不大,但他的實現難度卻比CSR或傳統SSR高得多。

大部分開發者,究其一生可能都不會用到孤島架構。

就是這么小的細分領域,都涌現了這么多競爭對手。

前端,真是太卷了......

參考資料

[1]islands-architecture:https://jasonformat.com/islands-architecture/。

[2]TTI:https://web.dev/interactive/。

[3]Selective Hydration:https://github.com/reactwg/react-18/discussions/37。

責任編輯:姜華 來源: 魔術師卡頌
相關推薦

2022-11-29 20:32:07

2023-12-22 08:00:00

2020-10-25 17:48:54

LVM系統運維

2022-10-27 09:59:55

視音學習

2025-02-11 10:17:19

DeepSeek大模型人工智能

2024-07-08 12:03:41

2012-12-26 09:14:11

SDN信息數據

2021-07-14 09:48:15

Linux源碼Epoll

2022-02-17 08:16:23

MMU內存管理

2023-07-19 10:09:18

架構倉庫SSD

2018-06-26 10:59:31

虛擬化云計算核心技術

2022-01-07 06:10:14

微軟Ignite趨勢

2022-01-19 09:00:51

UI前端手機開發

2019-03-17 16:45:09

RSA 2019網絡安全

2020-02-04 09:53:05

數據安全數據泄漏信息安全

2017-06-29 09:15:36

推薦算法策略

2021-03-10 08:20:54

設計模式OkHttp

2019-04-28 16:10:50

設計Redux前端

2021-09-06 16:44:28

騰訊云SaaS軟件

2021-07-01 09:00:14

LSMtreeWiscKey 機制
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 999国产精品视频免费 | 日韩av在线一区二区 | 国产一区二区三区在线 | 国产a视频| 成人午夜免费在线视频 | 久久久国产一区 | 羞羞的视频在线看 | 免费激情网站 | 亚洲人a| 夜夜操操操 | 一区二区三区四区五区在线视频 | 久久久夜色精品亚洲 | 国产在线精品一区二区三区 | 日本视频一区二区 | 国产粉嫩尤物极品99综合精品 | 国产精品久久久久久久久久免费看 | 久操伊人 | 国产视频线观看永久免费 | 精品国产色| 亚洲视频区 | 亚洲精品乱码久久久久久黑人 | 免费在线看黄视频 | 欧美成人在线影院 | 欧美综合一区二区三区 | 亚洲成人国产精品 | 国内精品久久久久久久影视简单 | 免费观看一区二区三区毛片 | 久久久久久久av | 91视频在线 | 成年人在线观看 | 五月天天色 | 日韩成人av在线播放 | 国产午夜精品久久久久 | 一区二区精品在线 | 欧美精品国产精品 | 欧美极品一区二区 | 欧美日韩黄色一级片 | 一级片av| 天堂三级 | 日本精品一区二区三区在线观看视频 | 国产伦精品一区二区三区照片91 |