靜態站點的產生很棒,但它帶來了挑戰。靜態站點要么是完全靜態的,要么使用的框架涉及服務器端路由時將失去真正靜態生成的好處。
Astro巧妙地將純靜態站點生成與強大的服務器端功能平衡。 Astro Action賦予了近乎進入的靜態站點,具有服務器端功率,非常適合搜索諸如搜索之類的功能。對於內容豐富的站點,添加搜索通常意味著僅前端解決方案,SaaS服務或其他框架中的完整服務器端重寫。
Astro允許在通過服務器端代碼(例如Fuse.js)處理搜索時大部分靜態構建時間生成。該演示使用Fuse.js搜索在構建過程中生成的一組書籤,並通過服務器調用返回結果。
Github Live Demo
項目設置
創建一個基本的Astro項目:
NPM創建Astro@最新
遵循提示:
- 項目位置:(您的首選目錄,例如,
./astro-search
) - 項目入門者:基本極簡主義入門者
- 安裝依賴項:是
- 初始化GIT存儲庫:推薦
導航到項目目錄並運行npm run dev
。您會看到默認的Astro主頁。
初始配置
刪除默認的主頁內容( /src/pages/index.astro
)。添加尾風CSS:
NPX Astro添加尾風
請按照CLI說明進行逆風。將基本標記添加到/src/pages/index.astro
:
--- // ./src/pages/index.astro 從'../ layouts/layout.astro'導入佈局'; --- <layout> <div> <h1 id="我的最新書籤">我的最新書籤</h1> <p>這只是一個大數中的10個,我們以後會更改</p> </div> </layout>
集成書籤數據
使用提供的書籤數據(或原始文章中的GitHub鏈接中獲取110個項目)。使用您的書籤數據創建/src/data/bookmarks.json
。 (有關示例數據,請參見原始文章)。
現在,配置Astro的內容層API。 create /src/content.config.ts
:
從“ astro:content”導入{decteCollection,z}; 從“ Astro/Loaders”導入{file}; const bookmarks = deCollection({{ 架構:z.Object({{ pagetitle:z.string(), URL:z.String(), 描述:z.String()。可選() }), 加載程序:文件(“ src/data/bookmarks.json”), }); 導出const collections = {bookmarks};
重新啟動服務器( npm run dev
)。
顯示書籤
導入並使用/src/pages/index.astro
中的bookmarks
集合:
--- 從'../ layouts/layout.astro'導入佈局'; 從'astro:content'導入{getCollection}; const書籤=等待getCollection('Bookmarks'); --- <layout> <div> <h1 id="我的最新書籤">我的最新書籤</h1> <p>這只是{bookmarks.length}書籤</p> <h2 id="最新書籤">最新書籤</h2> <ul> {bookmarks.slice(0,10).map((item)=>( <li> <a href="https://www.php.cn/link/881ad08b23bec80777fe4bce8bee4e0a"> </a>{item.data?.pagetitle} <p>{item.data?.Description}</p> </li> )}} </ul> </div> </layout>
這顯示了10個最新書籤。
通過操作和JavaScript實施搜索
創建一個新的組件/src/components/Search.astro
:
設置Astro動作
添加網絡化集成:
npx astro添加netlify
create /src/actions/index.js
搜索操作:
// ...(使用Fuse.js中的原始文章和原始文章中的操作代碼)...
整合動作
更新搜索組件的JavaScript以使用actions.search
函數(如原始文章所示,修改了用於處理Fuse.js的結果結構)。
結論
這項增強指南提供了使用Astro Actions和Fuse.js構建搜索功能的更簡潔,結構化的解釋。請記住,將代碼片段調整到您的特定項目設置和要求中。進一步的改進可能包括更強大的錯誤處理以及使用更先進的客戶端框架(例如Astro Islands中的React)。
以上是通過Astro Action和Fuse.js為搜索提供動力的詳細內容。更多資訊請關注PHP中文網其他相關文章!

具有CSS的自定義光標很棒,但是我們可以將JavaScript提升到一個新的水平。使用JavaScript,我們可以在光標狀態之間過渡,將動態文本放置在光標中,應用複雜的動畫並應用過濾器。

互動CSS動畫和元素相互啟動的元素在2025年似乎更合理。雖然不需要在CSS中實施乒乓球,但CSS的靈活性和力量的增加,可以懷疑Lee&Aver Lee有一天會成為一種

有關利用CSS背景濾波器屬性來樣式用戶界面的提示和技巧。您將學習如何在多個元素之間進行背景過濾器,並將它們與其他CSS圖形效果集成在一起以創建精心設計的設計。

好吧,事實證明,SVG的內置動畫功能從未按計劃進行棄用。當然,CSS和JavaScript具有承載負載的能力,但是很高興知道Smil並沒有像以前那樣死在水中

是的,讓#039;跳上文字包裝:Safari Technology Preview In Pretty Landing!但是請注意,它與在鉻瀏覽器中的工作方式不同。

此CSS-tricks更新了,重點介紹了年鑑,最近的播客出現,新的CSS計數器指南以及增加了幾位新作者,這些新作者貢獻了有價值的內容。

在大多數情況下,人們展示了@Apply的@Apply功能,其中包括Tailwind的單個property實用程序之一(會改變單個CSS聲明)。當以這種方式展示時,@Apply聽起來似乎很有希望。如此明顯


熱AI工具

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

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

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

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

熱門文章

熱工具

Dreamweaver Mac版
視覺化網頁開發工具

VSCode Windows 64位元 下載
微軟推出的免費、功能強大的一款IDE編輯器

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)

Safe Exam Browser
Safe Exam Browser是一個安全的瀏覽器環境,安全地進行線上考試。該軟體將任何電腦變成一個安全的工作站。它控制對任何實用工具的訪問,並防止學生使用未經授權的資源。

Dreamweaver CS6
視覺化網頁開發工具