精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

種子輪融資 700 w,Astro 的正式發布給前端界帶來了什么?

開發 前端
Astro 框架的定位,是像 Vue、React 這樣的底層渲染框架,還是像 Next.js 這種上層的研發框架?

就在上周,Astro 團隊發布了 1.0 的正式版本。

從年初我就開始關注這個項目了,但當時只是學習了一下倉庫的工程化搭建相關的東西 (changesets 自動發包之類),并沒有深入了解它本身的功能。借著正式發版的機會,這幾天熟悉了一下 Astro 1.0,發現了很多有意思的地方,下文會分別從團隊背景框架定位核心優勢幾個維度給大家展開介紹,最后也會推薦一些學習資料。

團隊背景

在正式介紹 Astro 之前,先給大家聊一聊相關的背景。Astro 的作者是 Fred K. Schott,沒錯,就是那個開發 Snowpack 的老哥,可以說是 Unbundle 構建工具的祖師爺:

圖片

但無奈的是 Vite 發展勢頭實在太猛,而 Snowpack 漸漸日薄西山,他本人也寫了文章發出下面的感慨:

圖片?

文章鏈接: https://dev.to/fredkschott/5-more-things-i-learned-building-snowpack-to-20-000-stars-5dc9

大意就是 Snowpack 前途渺茫,用戶越來越少,感覺要做到頭了啦,而 Vite 發展的非常好,那后面開發的 Astro 就基于 Vite 來做吧。現在連 Snowpack 的官網都表示棄坑了,主動給 Vite 引流:

圖片

當然,除了 Snowpack,Fred K. Schott 的團隊(叫Pika)還做了一件比較知名的產品: Skypack,即 NPM 包的 ESM CDN 服務:

圖片

不幸的是,Skypack 也很長時間(一年多)沒有維護了,可以看出團隊也不再想繼續投入這個項目了,個人感覺主要有兩個原因:

  • 競爭對手的強大。競品 esm.sh 一直在持續迭代且已經得到了 Deno 的官方推薦。
  • 方案落地困難。此類 ESM CDN 應用到實際的業務項目中仍然有諸多的現實障礙,如請求數量多、不能 Tree Shaking、不能本地調試等等,要落地是一個比較難的問題。

在近些年的時間里,Fred K. Schott 團隊一直將重心放在了新項目 Astro 上面,經過 16 個月的打磨, Astro 在全球擁有了 30000 多個用戶,被 Google、Netlify 等大公司使用,Github 的 star 已經達到 15k +。

值得一提的是,Fred K. Schott? 為了這個項目專門成立了一個創業公司: The Astro Technology Company?,并且已經融到了 700 萬美刀的種子輪投資,打算一直以開源的方式發展下去。相比于一些知名開源項目的贊助收入,如 Webpack[1] 22 w 刀/年、Babel[2]  30 w 刀/年,Astro 在經濟方面有如魚得水的優勢。

框架定位

接下來聊一聊 Astro 框架的定位,是像 Vue、React 這樣的底層渲染框架,還是像 Next.js 這種上層的研發框架?

這一點其實挺困擾初學者的,因為 Astro 既自創了類似于.vue、.jsx文件的 .astro 語法,又提供了像 Next.js 里面各種運行時的能力,比如約定式路由、構建優化、SSR 等等。

但實際上它給自己的定位非常清晰,即 content-focused 應用開發框架,換句話說,就是重內容、輕交互場景下的上層研發框架,比如大多數電商網站、文檔站、博客站、證券網站等等。

你可以將 Astro 理解為一個垂直場景下的Next.js,但它可以在它適用的領域里面可以勝過其它所有競品(如Next.js、Remix、Vuepress 等),這是它能夠做起來的重要原因。接下來,我們就來看看 Astro 的優勢在于哪些地方。

核心優勢

Astro 的主要優勢包括如下幾點:

  • Islands 架構,解決傳統 SSR/SSG 框架的全量 hydration 問題,做到盡可能少的 Client 端 JS 的開銷,甚至是 0 JS。
  • 學習成本低。.astro 語法和傳統的.jsx 和.vue 非常相似,對于新手前端來說也比較容易掌握。
  • 使用靈活。對于頁面的開發,你既可以使用官方的.astro 語法,也同樣可以使用.md、.vue、.jsx 語法,也就是說,你可以自由選擇其它前端框架的語法來開發,甚至可以在一個項目中同時寫 Vue 組件和 React 組件!
  • 構建迅速。底層構建體系基于 Vite 以及 Esbuild 實現,項目啟動速度非常快。

Islands 架構

在如上的幾個優點中,我們來重點說一說 Astro 的 Islands 架構,因為這是它高性能最主要的原因。

Islands 架構模型早在 2019 年就被提出來了,并在 2011 年被 Preact 作者Json Miller 在Islnads Architecture[3] 一文中得到推廣。這個模型主要用于 SSR (也包括 SSG) 應用,我們知道,在傳統的 SSR 應用中,服務端會給瀏覽器響應完整的 HTML 內容,并在 HTML 中注入一段完整的 JS 腳本用于完成事件的綁定,也就是完成 hydration (注水) 的過程。當注水的過程完成之后,頁面也才能真正地能夠進行交互。

那么當應用的體積逐漸增大時,需要在客戶端執行的 JS 腳本也會越來越多,這也意味著 TTI(可交互時間) 指標越來越高:

圖片

為了解決這個問題,Islands 架構將頁面拆分為各自獨立的組件,包含靜態組件和可交互組件,如下圖的例子所示:

圖片

可以清楚的看到,一個頁面中只有部分的組件交互,那么對于這些可交互的組件,我們可以并行地執行 hydration 過程,因為組件之間是互相獨立的。

而對于靜態組件,即不可交互的組件,我們可以讓其不參與 hydration 過程,直接復用服務端下發的 HTML 內容。

可交互的組件就猶如整個頁面中的孤島(Island),因此這種模式叫做 Islands 架構。

相比于傳統 SSR 中的全量 hydration,Islands 模式可以實現局部(partial) hydration,從而優化 JS 的體積,減少網絡傳輸的成本和 JS 運行時的開銷。

在 Astro 中,默認所有的組件都是靜態組件,比如:

// index.astro
import MyReactComponent from '../components/MyReactComponent.jsx';
---
<MyReactComponent />

值得注意的是,這種寫法不會在瀏覽器添加任何的 JS 代碼。但有時我們需要在組件中綁定一些交互事件,那么這時就需要激活孤島組件了,在 Astro 如何來激活呢?其實很簡單,在使用組件時加上client:load指令即可:

// index.astro
---
import MyReactComponent from '../components/MyReactComponent.jsx';
---
<MyReactComponent client:load />

如此一來,Astro 會給瀏覽器傳輸一部分 JS 代碼供這個組件完成 hydration,以便后續的交互。

對比 Next.js 和 Remix

讀到這里,你可能會說了,相比于其它的業界方案,Astro 到底優勢在哪里呢?我們不妨來盤點一下。

首先是大名鼎鼎的 Next.js,我們知道 Next.js 是一個非常經典的 React SSR 框架,也是使用傳統的 SSR/SSG 技術,可以適用于幾乎所有的 Web 開發場景。而 Astro 在其適用的content-focused場景下,性能會明顯高于 Next.js,以下是兩個真實的遷移案例:

圖片圖片

可以看到,Astro 相比 Next.js 可以大幅度減少 JS 代碼的體積(90% 以上),同時頁面的運行時性能也提升了 30% 以上。除此之外,Astro 不僅支持使用 React 框架,而且支持 Vue、Solid 等在內的各種前端框架,靈活性更高。

其次是最近比較火的新秀框架 Remix,它基于 react-router 管理組件,通過 loader 和 action 的概念盡可能將邏輯代碼放到服務端的 bundle,從而減少客戶端 JS 的代碼體積,同樣是崇尚 0 JS 的理念,Remix 卻仍然需要全量 hydration,無法完成 partial hydration。此外,Astro 還有兩大優勢:

  • 除了 React,也支持其它的眾多前端框架;
  • 同時支持 SSR 和 SSG,而 Remix 不支持 SSG。

對比 React 18 的 Selection Hydration 特性

React 18 提供了 renderToPipeableStream API,真正實現了 SSR 場景下的 Selection Hydration,主要有如下的幾個特點:

  • 在完整的 HTML 渲染之前就可以進行組件的 hydrate,而不用等待 HTML 的內容發送完畢
  • hydration 可中斷。比如頁面中有兩個組件: Sidebar 和 Comment,當這個部分的 HTML 發送至瀏覽器時,React 打算開始對 Sidebar 組件進行 hydrate:

圖片

如果用戶在這個過程中點擊了 Comment 組件,那么 React 會中斷當前對于 SideBar 組件的 hydrate,從而去執行 Comment 組件的 hydrate:

圖片

詳情可見 React 18 SSR Architecture: https://github.com/reactwg/react-18/discussions/37

那么 Astro 中的 Islands 架構,即 Partial Hydration,和 React 的 Selection Hydration 到底是不是一個東西呢?

答案是否定的。兩者存在著非常大的區別:

  • 從渲染框架上來看,Selection Hydration 依附于具體框架的實現,而Partial Hydration 可以做到框架無關,即使是 Vue、Solid 的項目也可以做到Partial Hydration。
  • 從客戶端執行的 JS 總量來看,Partial Hydration 可以做到加載部分組件的 JS 代碼,而Selection Hydration 仍然需要加載和執行全量的 JS 代碼。
  • 從服務端和客戶端的交互來看,Selection Hydration 嚴重依賴于流式(Streaming)渲染,服務端需要加上transfer-encoding: chunked 的響應頭,而Partial Hydration 沒有這個限制。

因此,雖然兩者都是在 Hydration 上做文章,但其實是兩種完全不同的方案,而且 Partial Hydration  更加通用,限制更少,執行的 JS 更少。

小結

以上就是對 Astro 的介紹和分析,后面有機會給大家剖析一下內部的源碼實現。文中如有不妥的地方,歡迎大家評論和指正。最后給大家推薦一些 Astro 的學習資料,方便大家讀完文章進一步了解:

  • Astro 官方文檔: https://astro.build/。
  • Astro 實戰系列教程: https://aalam.in/blog/astro-get-up-and-running。

參考資料

[1]Webpack: https://opencollective.com/webpack。

[2]Babel: https://opencollective.com/babel。

[3]Islnads Architecture: https://jasonformat.com/islands-architecture/。

責任編輯:姜華 來源: 三元同學
相關推薦

2020-03-09 18:34:50

ServerlessDevOps前端

2023-08-31 10:04:02

Astro 3.0前端

2023-12-07 11:38:25

2024-04-11 13:48:55

2015-10-09 10:15:41

大數據公司

2012-07-20 10:36:03

虛擬化

2015-08-19 13:10:35

大數據網絡運營

2019-05-20 15:45:18

區塊鏈數據中心數據

2020-10-14 11:16:06

5G邊緣計算

2024-12-06 08:00:51

2018-05-14 09:21:24

存儲全閃存

2015-08-26 10:32:28

夢唐科技互聯網+

2018-04-09 13:01:58

2020-10-13 10:35:31

5G

2017-06-12 12:03:28

2023-01-26 10:55:55

生成器Astro靜態站點

2014-09-03 13:34:08

2017-08-26 15:13:15

物聯網智能化Ruff

2025-06-24 15:17:02

AIMeta蘋果

2024-03-08 06:58:55

TypeScript類型縮小模塊解析
點贊
收藏

51CTO技術棧公眾號

欧美亚洲色综久久精品国产| 欧美日韩亚洲国产成人| 天天干在线播放| 精品香蕉视频| 日韩欧美视频在线 | 日韩88av| 精品国产一区二区三区四区四 | 亚洲精品国产成人| 天天干天天综合| 7777kkk亚洲综合欧美网站| xfplay精品久久| 亚洲www视频| 99re国产在线| 亚洲国产美女 | 日本少妇xxxxx| 视频一区日韩精品| 欧美在线免费视屏| 国产主播自拍av| 99视频在线观看地址| 成人h精品动漫一区二区三区| 国产精品丝袜高跟| 国产成人精品一区二三区| 久久精品亚洲人成影院| 亚洲美女性视频| 年下总裁被打光屁股sp| 在线日本欧美| 福利视频第一区| 国产 欧美 日韩 一区| 日本综合在线| 国产亚洲精品aa午夜观看| 国产日韩欧美精品| av中文字幕第一页| 久久成人久久爱| 国产精品va在线播放| 日本免费一二三区| 亚洲成人99| 在线视频国产日韩| 在线 丝袜 欧美 日韩 制服| 超碰成人97| 日韩亚洲欧美在线观看| 五月天丁香花婷婷| 狂野欧美性猛交xxxx| 色呦呦一区二区三区| 男女视频网站在线观看| 日本高清成人vr专区| 1区2区3区国产精品| 亚洲国产高清国产精品| 福利在线观看| 中文字幕国产一区二区| 日韩久久不卡| 国产h在线观看| 国产婷婷精品av在线| 欧美日韩精品不卡| 邻居大乳一区二区三区| 26uuu精品一区二区| 精品一区2区三区| 天堂av网在线| 91网上在线视频| 精品一区二区国产| 精品推荐蜜桃传媒| 国产丝袜欧美中文另类| 午夜精品一区二区在线观看 | 欧美日韩在线中文| 天堂8中文在线最新版在线| 欧美日韩在线第一页| 黄www在线观看| 91九色综合| 欧美日韩大陆一区二区| 永久免费黄色片| 亚洲小说春色综合另类电影| 精品久久久久久久人人人人传媒| 四虎精品一区二区| 日韩电影在线观看完整免费观看| 日韩精品在线电影| www..com.cn蕾丝视频在线观看免费版| 欧美日韩水蜜桃| 日韩视频精品在线| 久久午夜鲁丝片午夜精品| 在线精品在线| 国产精品成人av性教育| 一级黄色片在线播放| 国产mv日韩mv欧美| 欧美日本韩国一区二区三区| h视频在线免费| 亚洲精选一二三| 一二三四视频社区在线| 99riav视频一区二区| 欧美一区在线视频| 特大黑人巨人吊xxxx| av中字幕久久| 欧美精品久久久久久久| 一二三区免费视频| 国产精品资源在线看| 精品乱码一区二区三区| 免费av网站在线观看| 亚洲一区二区三区激情| 国产精品亚洲二区在线观看 | 欧美一区二区三级| 国产精品无码网站| 99re66热这里只有精品8| 欧美激情在线有限公司| 久久这里只有精品9| 国产 欧美在线| 手机看片福利永久国产日韩| 丁香花高清在线观看完整版| 在线看日本不卡| 亚洲少妇一区二区三区| 成人影视亚洲图片在线| 欧美精品videossex性护士| 免费黄色一级大片| 99久久夜色精品国产网站| 亚洲视频sss| 桃色av一区二区| 欧美一级欧美一级在线播放| 日本性高潮视频| 亚洲精品女人| 91成人在线看| 色大18成网站www在线观看| 精品久久久久久中文字幕| 波多野结衣在线免费观看| 奇米狠狠一区二区三区| 久久久久久久久久久亚洲| 11024精品一区二区三区日韩| 91免费看`日韩一区二区| 大陆极品少妇内射aaaaaa| 国产91在线播放精品| 亚洲毛片一区二区| 六月丁香在线视频| 国产999精品久久| 在线视频亚洲自拍| 成人一区视频| 亚洲日本成人女熟在线观看| 日本一级淫片色费放| 国产成人av影院| 欧美三级午夜理伦三级老人| 国产91在线精品| 一区二区三区精品99久久| 免费av网站在线| 99re66热这里只有精品3直播| 国内少妇毛片视频| 一区二区三区四区精品视频| 久久久99免费视频| 97精品人妻一区二区三区在线| 国产欧美日韩一区二区三区在线观看| 国产免费黄视频| 免费观看成人www动漫视频| 久久青草福利网站| 亚洲欧美日韩精品永久在线| 欧美日韩亚洲高清| 在线免费观看污视频| 亚洲激情影院| 久久久久久久久久久久久9999| 韩国精品一区| 亚洲国产精品成人精品| 国产成人在线免费观看视频| av成人老司机| 37pao成人国产永久免费视频| 亚洲婷婷伊人| 国产女人精品视频| 毛片免费不卡| 欧美成人在线直播| 久久精品视频6| 91色porny在线视频| 97视频在线免费播放| 欧美在线免费看视频| 成人在线播放av| 在线欧美三级| 亚洲国产一区二区三区在线观看| 国产一级做a爱片久久毛片a| 久久综合五月天婷婷伊人| 毛片av免费在线观看| av一区二区在线播放| 91久久久亚洲精品| 欧美videosex性欧美黑吊| 亚洲精品久久久久国产| 成人免费视频国产免费| 国产精品丝袜黑色高跟| 日本少妇激三级做爰在线| 伊人天天综合| 日韩黄色影视| 玖玖玖电影综合影院| 国内精品小视频在线观看| 久久久久久久久亚洲精品| 欧美精选一区二区| 精品少妇一二三区| 国产女主播一区| 日本中文字幕精品| 美女国产一区| 女同性恋一区二区| 欧美调教视频| 成人激情视频小说免费下载| xxxx视频在线| 视频一区视频二区国产精品 | 国产91丝袜在线播放| 少妇性饥渴无码a区免费| 日韩aaaa| 韩日午夜在线资源一区二区| 日本午夜精品久久久久| 欧美激情2020午夜免费观看| 国产小视频福利在线| 日韩欧美在线1卡| 亚洲综合图片网| 一区二区久久久久| 九九九视频在线观看| 国产宾馆实践打屁股91| 中文字幕国产传媒| 91久久夜色精品国产九色| 亚洲一区3d动漫同人无遮挡| 欧洲亚洲视频| 97超级在线观看免费高清完整版电视剧| 97成人资源| 欧美激情xxxxx| 无遮挡动作视频在线观看免费入口| 亚洲成av人片在线观看香蕉| 国产又粗又长视频| 日本韩国一区二区三区| 日韩av男人天堂| 亚洲美女区一区| 99久久99久久精品免费| 91视视频在线直接观看在线看网页在线看| 涩涩网站在线看| 免费人成在线不卡| www黄色av| 亚洲电影在线| 欧美久久久久久久久久久久久久| 国产国产精品| 亚洲国产综合自拍| 国产成人精品999在线观看| 黑人巨大精品欧美一区二区小视频 | 欧美成人久久| 美国av在线播放| 日韩一区自拍| 亚洲国产精品久久久久久女王| 美女少妇全过程你懂的久久| 久久本道综合色狠狠五月| 99精品中文字幕在线不卡| 91久久国产自产拍夜夜嗨| 国产精品va视频| 92看片淫黄大片看国产片| av亚洲一区| 国产欧美在线观看| 国产资源一区| 国产一区红桃视频| 久久电影天堂| 91在线观看免费高清完整版在线观看| 韩国精品视频在线观看 | 国产精品久久久久久久久果冻传媒| 国产精品无码一区二区三区| ww亚洲ww在线观看国产| 巨胸大乳www视频免费观看| 久久久午夜电影| 非洲一级黄色片| 中文字幕av一区二区三区免费看| 青青青视频在线播放| 国产精品美女久久久久久久久| 天天舔天天操天天干| 国产精品网站导航| 成人高潮免费视频| 一区二区三区四区国产精品| 国产一级在线播放| 欧美视频一二三| 少妇一级淫片日本| 69久久夜色精品国产69蝌蚪网| 国产成人精品无码高潮| 欧美精品一区男女天堂| 你懂的在线视频| 中文欧美日本在线资源| 黄色网址在线免费播放| 久久久久久亚洲精品| 性国裸体高清亚洲| 国产精品嫩草影院一区二区 | 九色综合日本| 国产欧美一区| 一级全黄肉体裸体全过程| 国产一区日韩一区| 中文字幕日本最新乱码视频| 日本不卡一二三区黄网| 人妻精品久久久久中文字幕69| 竹菊久久久久久久| 日本不卡二区高清三区| 91亚洲人成网污www| 日本天堂免费a| 国产精品乱看| 中文字幕永久有效| 成人免费毛片嘿嘿连载视频| 欧美熟妇一区二区| 日韩毛片一二三区| 中日韩黄色大片| 欧美日韩一二三区| 国模无码一区二区三区| 国产一区二区三区高清在线观看| av黄色在线| 青青草成人在线| 国模大尺度视频一区二区| 精品国产乱码久久久久久久软件| 日韩精品dvd| 国产午夜福利100集发布| 美国十次了思思久久精品导航| 美女露出粉嫩尿囗让男人桶| 日本一区二区综合亚洲| 久久视频免费在线观看| 欧美午夜精品久久久久久超碰| www.日本在线观看| 中文字幕精品在线视频| 国产无遮挡裸体视频在线观看| 国产啪精品视频| 亚洲婷婷影院| 9色porny| 国产一区二区福利视频| 久久中文字幕精品| 精品久久久久久国产| 国产人妖一区二区三区| 尤物99国产成人精品视频| 岛国av在线网站| 3d精品h动漫啪啪一区二区| 国产在线观看91一区二区三区 | 免费视频一区| 国产精品19p| √…a在线天堂一区| 黄色av一区二区| 国产视频精品自拍| heyzo在线欧美播放| 91在线观看免费高清| 久久免费精品视频在这里| 1024av视频| 成人精品gif动图一区| 翔田千里88av中文字幕| 欧美日韩在线三区| 青青草免费在线| 性欧美长视频免费观看不卡| 久久wwww| av磁力番号网| 国产剧情在线观看一区二区| 亚洲欧美精品久久| 欧美日韩视频第一区| 国产在线网站| 日韩免费在线观看视频| 久久99免费视频| 日本三级免费网站| 91在线免费视频观看| 国产69精品久久久久久久久久| 欧美精品一区二区高清在线观看| 日韩成人伦理| 懂色一区二区三区av片| 欧美亚洲不卡| 四虎成人免费视频| 亚洲电影在线免费观看| 乱色精品无码一区二区国产盗| 欧美交受高潮1| 国产欧美一区二区三区米奇| 国产自产在线视频| www日韩大片| 国产字幕在线观看| 中文字幕日韩欧美在线视频| 国产精品99精品一区二区三区∴| 日韩精品一区二区三区外面 | 国产私拍一区| 亚洲一区二区三区四区五区午夜| 黄色正能量网站| 色视频一区二区| 777电影在线观看| 亚洲qvod图片区电影| 在线观看的日韩av| 国产精品揄拍100视频| 在线日韩国产精品| 麻豆视频在线观看免费网站| 亚洲精品日韩av| 国产日韩一区| 亚洲欧美日韩第一页| 3d动漫精品啪啪一区二区竹菊| 国产在线xxx| 欧美日韩国产不卡在线看| 捆绑调教美女网站视频一区| 天天干中文字幕| 日韩大片免费观看视频播放| 日韩和的一区二在线| 黄色网络在线观看| gogogo免费视频观看亚洲一| 毛片在线免费播放| 欧美成人激情视频| 欧美一性一交| 亚洲免费999| 亚洲sss视频在线视频| 福利视频在线导航| 91精品国产高清久久久久久91裸体| 亚洲三级国产| 精品人体无码一区二区三区| 日韩精品最新网址| 成人视屏在线观看| 国产高清不卡无码视频| 久久久久久一级片| 国产视频www| 日韩免费观看高清| 国产精品99一区二区| 久久久久久国产免费a片| 精品剧情v国产在线观看在线| 激情开心成人网| 全黄性性激高免费视频| 中文字幕一区日韩精品欧美| 五月婷婷开心中文字幕|