我最近開始使用 Astro 來重建最初使用 WordPress、Go、Rails 和 Hugo 建造的副專案。我選擇 Astro 是因為它具有類似 React 的 DX 和良好的語言伺服器支持,並且它與具有慷慨免費套餐的無伺服器託管平台(Cloudflare、AWS Lambda 等)兼容。
當我開始使用 Astro 時,我對它了解不多。現在我已經遷移了多個站點,我想與其他考慮使用該框架的人分享我喜歡和不喜歡該框架的地方。
Astro:我喜歡的
Astro 的核心是一個靜態網站產生器,能夠在需要時產生動態伺服器渲染頁面。 Astro 非常適合互動性有限的部落格或小型行銷網站。該框架提供了 Next.js 的大部分 DX,而沒有 React.js 開銷。
伺服器渲染模板語言中良好的 IntelliSense 和程式碼格式化
說實話:傳統的伺服器渲染範本語言嚴重缺乏良好的語言伺服器支援和程式碼格式。與 React/Vue/Svelte 同業相比,Go 模板、Jinja、ERB 和 EJS 在工具方面遠遠落後。大多數伺服器渲染的模板語言無法知道哪些變數在範圍內或它們的類型是什麼。
使用 Astro,所有這些功能都只需一個 VS Code 擴充功能即可實現。
在 Astro 模板內,您可以在模板頂部的「程式碼圍欄」內設定數據,該程式碼圍欄在建置時或回應伺服器上的請求時運行。實際情況如下:
由於模板的所有資料都載入到模板上方的「程式碼圍欄」中,因此語言伺服器可以為範圍內定義的任何物件的屬性提供自動完成功能。它還會指示您何時嘗試使用不存在的變數。
Astro 檔案可以是“組件”
我對 Go 模板、Jinja 和 EJS 等傳統模板語言最大的抱怨之一是它們沒有可以接受子元素的「元件」。我的大多數網站都有某種寬度受限的「容器」UI 元素,這可確保內容不會飛到超寬顯示器上的螢幕末端。如果您有一個手動添加到
的 .container 類,元素,那麼這通常可以正常工作。但是,如果您使用的是像 Tailwind 這樣的實用 CSS 框架,那麼您可能會發現自己將以下程式碼新增至每個頁面範本:Astro 檔案不限於單一插槽:它們可以有多個。
我最喜歡的 Astro 元件功能是它們可以接受程式碼圍欄內的 props。這是一個例子:
該元件可以在另一個文件中使用時接受道具。
內建具有即時重新載入功能的前端資產管道
我之前已經用 Vite 建立了自己的伺服器端整合。如果您想快速在線獲取某些東西,那麼您希望避免自己建立這種商品功能。 Astro 是內建的。
如果您想在 Astro 頁面或元件中新增自訂腳本,您只需在頁面上放置腳本標籤即可。
Astro 將自動編譯 TS 和 JS 檔案作為網站建置流程的一部分。您也可以編寫使用 Astro 元件內腳本標記內的 node_modules 匯入的腳本,Astro 將在建置時對其進行編譯並將其提取到自己的檔案中。
您可以透過在程式碼圍欄中匯入 CSS 或 Scss 樣式來將 CSS 或 Scss 樣式包含在 Astro 檔案中。
Astro 還提供了透過在 Astro 檔案中使用樣式標籤來執行 範圍樣式 的功能。這個功能對於 Vue 使用者來說可能很熟悉。
給定以下 Astro 檔案:
簡單吧?
行動
操作提供了一種類型安全的方式來運行後端函數。它們提供驗證並可以處理 JSON 和表單資料。它們無疑是 Astro 的殺手級功能之一:所有這些都需要以自訂方式在 Next.js 應用程式中手動連接。它們需要的程式碼比範例多一些,但使用起來非常優雅。我建議閱讀操作文檔頁面。
無運轉時 JS 成本
有無數的 Twitter 開發者說 React 「夠快」。對於很多事情來說並非如此。
我在小專案使用 Rasbperry Pi 4,你可以感受 React 的運行時成本。我確信對於便宜的 Android 手機來說也是一樣的,只不過在這種情況下 JS 開銷也會耗盡電池。
如果我的網站需要的唯一互動性是切換導航選單,我寧願自己連接它。當我需要時,我會很樂意使用 React,但對於許多專案來說,我實際上並不需要它。
Astro:我不喜歡什麼
我不喜歡 Astro 的地方並不是該框架獨有的:它們是從 JavaScript 生態系統中其他工具借用的想法。
基於檔案的路由
由於 Astro 採用基於檔案的路由,Astro 專案中的一半檔案最終命名為 index.(astro|js|ts) 或 [id].(astro|js|ts)。基於檔案的路由是一種令人討厭的模式,在 Next.js 實現它之後,它席捲了前端世界,並且它有很多缺點:
- 您經常會在編輯器中開啟 5 個具有相同檔案名稱的標籤。至少需要猜測 3 次才能找到您要查找的選項卡。
- 編輯器的檔案模糊查找器的用處要小得多,因為太多檔案具有相同的名稱。
- 基於檔案的路由將應用程式的核心關注點之一分散在許多檔案和資料夾中,因此很難在編輯器中一目了然地看到所有路由。相反,您必須深入到多個資料夾才能了解哪些頁面可用。
我承認:當您創建一個頁面少於 10 個的網站時,基於文件的路由感覺很棒。但隨著網站的發展,它會增加摩擦,你與該功能的對抗多於從中受益。
在 JavaScript 生態系統中,Remix 透過提供基於檔案的路由版本而脫穎而出,該版本將所有路由扁平化到單一目錄中,並允許使用者透過手動路由配置完全選擇退出基於檔案的路由。
基於檔案的路由是我對 Astro 最大的抱怨,但這是一個很難逃避的功能。它在 Next.js、Nuxt.js、SvelteKit 等中實作。更奇怪的是,這些框架對於應用程式其他部分的檔案名稱基本上沒有意見。與 Ruby on Rails 相比,大多數 JavaScript 框架在檔案名稱和專案結構方面都為您提供了很大的自由度——除了用於路由。這是一種特殊情況,特殊情況會增加軟體的複雜性。
每個文件一個組件(某種程度)
我真正喜歡的 JavaScript 語言功能是能夠在單一檔案中定義多個變數、函數和類別。這使得可以輕鬆地共置相關功能,而不必因為語言層級的限製而提前將其提取到其他文件。
與 Vue 的單一檔案元件非常相似,Astro 檔案允許為每個檔案定義一個元件。這對我來說很乏味,但 Astro 提供了一種解決方法。
Astro 可以將預先渲染的 React、Vue、Svelte、Solid 和 Preact 元件直接嵌入到其模板中,而無需載入任何客戶端 JavaScript。 Preact 元件與 Astro 合理地配對得很好,因為 Preact JSX 比 React JSX 更接近 HTML。不過,在同一個專案中管理 Astro 和 Preact 元件確實變得很尷尬,一旦我開始使用 Preact 元件,我發現自己將大部分 UI 從 Astro 檔案移到了 Preact 中。
關於 Astro 的最終想法
如果您是 Next.js、Nuxt 或 SvelteKit 的狂熱用戶,並且對您的框架感到滿意,那麼您可能不會從 Astro 中得到太多好處。然而,如果您想向使用者減少 JavaScript 的臃腫,同時保留 Next.js 之類的 DX,那麼 Astro 可能適合您。
Astro 面向內容驅動的網站,並提供開箱即用的 Markdown 支援。由於其對內容的關注,它是替代 WordPress 或 Hugo 網站的理想開發者部落格平台。然而,它的功能遠不止於透過操作等功能來實現內容網站。
儘管我非常厭惡基於文件的路由,但我對採用 Astro 最大的擔憂是可能會發生重大變化,迫使我重建網站。 JavaScript 工具比其他語言生態系統中的工具更積極地進行重大變更。因為我對 Astro 還很陌生,所以我不知道從一個主要版本到下一個版本有多少變化。即使有這樣的擔憂,我還是計劃將 5 到 6 個網站從其他平台遷移到 Astro,這樣我就可以利用其一流的 DX 並以低廉的價格託管這些網站。
以上是對 Astro 的第一印象:我喜歡什麼、不喜歡什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

Python和JavaScript的主要區別在於類型系統和應用場景。 1.Python使用動態類型,適合科學計算和數據分析。 2.JavaScript採用弱類型,廣泛用於前端和全棧開發。兩者在異步編程和性能優化上各有優勢,選擇時應根據項目需求決定。

選擇Python還是JavaScript取決於項目類型:1)數據科學和自動化任務選擇Python;2)前端和全棧開發選擇JavaScript。 Python因其在數據處理和自動化方面的強大庫而備受青睞,而JavaScript則因其在網頁交互和全棧開發中的優勢而不可或缺。

Python和JavaScript各有優勢,選擇取決於項目需求和個人偏好。 1.Python易學,語法簡潔,適用於數據科學和後端開發,但執行速度較慢。 2.JavaScript在前端開發中無處不在,異步編程能力強,Node.js使其適用於全棧開發,但語法可能複雜且易出錯。

javascriptisnotbuiltoncorc; sanInterpretedlanguagethatrunsonenginesoftenwritteninc.1)JavascriptwasdesignedAsignedAsalightWeight,drackendedlanguageforwebbrowsers.2)Enginesevolvedfromsimpleterterpretpretpretpretpreterterpretpretpretpretpretpretpretpretpretcompilerers,典型地,替代品。

JavaScript可用於前端和後端開發。前端通過DOM操作增強用戶體驗,後端通過Node.js處理服務器任務。 1.前端示例:改變網頁文本內容。 2.後端示例:創建Node.js服務器。

選擇Python還是JavaScript應基於職業發展、學習曲線和生態系統:1)職業發展:Python適合數據科學和後端開發,JavaScript適合前端和全棧開發。 2)學習曲線:Python語法簡潔,適合初學者;JavaScript語法靈活。 3)生態系統:Python有豐富的科學計算庫,JavaScript有強大的前端框架。

JavaScript框架的強大之處在於簡化開發、提升用戶體驗和應用性能。選擇框架時應考慮:1.項目規模和復雜度,2.團隊經驗,3.生態系統和社區支持。

引言我知道你可能會覺得奇怪,JavaScript、C 和瀏覽器之間到底有什麼關係?它們之間看似毫無關聯,但實際上,它們在現代網絡開發中扮演著非常重要的角色。今天我們就來深入探討一下這三者之間的緊密聯繫。通過這篇文章,你將了解到JavaScript如何在瀏覽器中運行,C 在瀏覽器引擎中的作用,以及它們如何共同推動網頁的渲染和交互。 JavaScript與瀏覽器的關係我們都知道,JavaScript是前端開發的核心語言,它直接在瀏覽器中運行,讓網頁變得生動有趣。你是否曾經想過,為什麼JavaScr


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

SublimeText3漢化版
中文版,非常好用

mPDF
mPDF是一個PHP庫,可以從UTF-8編碼的HTML產生PDF檔案。原作者Ian Back編寫mPDF以從他的網站上「即時」輸出PDF文件,並處理不同的語言。與原始腳本如HTML2FPDF相比,它的速度較慢,並且在使用Unicode字體時產生的檔案較大,但支援CSS樣式等,並進行了大量增強。支援幾乎所有語言,包括RTL(阿拉伯語和希伯來語)和CJK(中日韓)。支援嵌套的區塊級元素(如P、DIV),

SecLists
SecLists是最終安全測試人員的伙伴。它是一個包含各種類型清單的集合,這些清單在安全評估過程中經常使用,而且都在一個地方。 SecLists透過方便地提供安全測試人員可能需要的所有列表,幫助提高安全測試的效率和生產力。清單類型包括使用者名稱、密碼、URL、模糊測試有效載荷、敏感資料模式、Web shell等等。測試人員只需將此儲存庫拉到新的測試機上,他就可以存取所需的每種類型的清單。

MinGW - Minimalist GNU for Windows
這個專案正在遷移到osdn.net/projects/mingw的過程中,你可以繼續在那裡關注我們。 MinGW:GNU編譯器集合(GCC)的本機Windows移植版本,可自由分發的導入函式庫和用於建置本機Windows應用程式的頭檔;包括對MSVC執行時間的擴展,以支援C99功能。 MinGW的所有軟體都可以在64位元Windows平台上運作。

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。