Astro - 基礎入門6. 性能優化與部署 (Middleware & Deployment)

更新 發佈閱讀 4 分鐘

第六課:中間件 (Middleware) 與生產部署 (Deployment)

核心觀念:Middleware 是什麼?

中間件是站在「請求 (Request)」與「頁面 (Page)」之間的一道關卡。每當有人點擊你的網站,中間件會先執行。這非常適合用來處理:身份驗證、重定向、或是統一修改 HTML 字體

1. 手把手實作:建立中間件

請建立檔案 src/middleware.ts(這是一個特殊的檔名):

import { defineMiddleware } from 'astro:middleware'

export const onRequest = defineMiddleware(async (context, next) => {
console.log(`有人訪問了:${context.url.pathname}`)

// 範例:簡單的權限檢查
if (context.url.pathname.startsWith('/admin')) {
// 如果沒有登入(這裡模擬邏輯),就跳轉回首頁
return context.redirect('/')
}

// 繼續執行後續的請求
const response = await next()
return response
})

2. 手把手實作:環境變數 (.env)

在部署時,你絕對不能把 API Key 或資料庫密碼寫在代碼裡。

  1. 在專案根目錄建立 .env
    SECRET_PASSWORD=astro_is_cool
  2. 在 .astro 或 .ts 檔案中使用:
---
const password = import.meta.env.SECRET_PASSWORD;
---

3. 手把手實作:部署到 Vercel / Netlify

這是最令人興奮的一步。因為你之前已經執行過 npx astro add vercel(或 node),現在你只需要:

  1. 將代碼推送到 GitHub。
  2. 登入 Vercel,點擊 Add New Project
  3. 匯入你的 GitHub 儲存庫。
  4. 重點:如果在 .env 有設定變數,記得在 Vercel 的 Environment Variables 介面也填入。
  5. 點擊 Deploy

📝 最終結業練習題

任務目標:完成一個具有「保護機制」的開發者專區。

  1. 在 src/pages/ 下建立一個 admin.astro 頁面。
  2. 在 src/middleware.ts 中撰寫邏輯:如果使用者訪問 /admin 且 URL 參數沒有包含 ?pass=123,就將其重定向到首頁。
  3. 提示:使用 context.url.searchParams.get('pass')
  4. 性能檢查:執行 npm run build。觀察終端機輸出的檔案大小,看看 Astro 是如何 將你的 React 組件和 Markdown 打包成極小的檔案。
  5. 最終挑戰:將這個專案成功部署到網路上,並把網址分享給朋友。

第六課練習題實作放在下一篇 ( 我也是第一次學習,自己試作,不一定是對的喔👍 )


🎓 課程結業總結

你現在已經具備了 Astro 5.x 的核心實戰能力:

  • 靈活的路由系統:利用 [id].astro 處理動態內容。
  • Content Layer API:以最專業的方式管理 Markdown 資料。
  • 混合渲染:精確控制 client:visible 與 server:defer 的時機。
  • 全端能力:透過 Actions 與 Middleware 處理複雜邏輯。
留言
avatar-img
李昀瑾的沙龍
0會員
24內容數
李昀瑾的沙龍的其他內容
2026/01/12
Astro - 基礎入門5.第五課練習題實作
2026/01/12
Astro - 基礎入門5.第五課練習題實作
2026/01/12
第五課:Astro Actions —— 安全、簡單的伺服器通訊 核心觀念:Actions 是什麼? 前你需要寫一個 src/pages/api/login.ts,然後在前端寫 fetch('/api/login', { method: 'POST', ... })。 在 Astro 5 中,
Thumbnail
2026/01/12
第五課:Astro Actions —— 安全、簡單的伺服器通訊 核心觀念:Actions 是什麼? 前你需要寫一個 src/pages/api/login.ts,然後在前端寫 fetch('/api/login', { method: 'POST', ... })。 在 Astro 5 中,
Thumbnail
2026/01/11
Astro - 基礎入門4.第四課練習題實作
2026/01/11
Astro - 基礎入門4.第四課練習題實作
看更多
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
市場經驗拉長之後,很多投資人都會遇到同一個問題:不是方向看錯,而是部位太集中個股,常常跟大趨勢脫節。 早年的台股環境,中小股非常吃香,反而權值股不動,但QE量化寬鬆後,特別是疫情之後,後疫情時代,鈔票大量在股市走動,這些大資金只能往權值股走,因此早年小P的策略偏向中小型個股,但近年AI興起,高技術
Thumbnail
市場經驗拉長之後,很多投資人都會遇到同一個問題:不是方向看錯,而是部位太集中個股,常常跟大趨勢脫節。 早年的台股環境,中小股非常吃香,反而權值股不動,但QE量化寬鬆後,特別是疫情之後,後疫情時代,鈔票大量在股市走動,這些大資金只能往權值股走,因此早年小P的策略偏向中小型個股,但近年AI興起,高技術
Thumbnail
Alphabet 於 2025/12/22(台北 12/23) 宣布以約 47.5 億美元收購潔淨能源開發商 Intersect,目的是補足 AI 資料中心快速擴張所需的電力與基礎設施。這筆交易顯示,AI 算力競賽已延伸到電力、電網與建置速度,能源正式成為科技巨頭的核心戰場之一。
Thumbnail
Alphabet 於 2025/12/22(台北 12/23) 宣布以約 47.5 億美元收購潔淨能源開發商 Intersect,目的是補足 AI 資料中心快速擴張所需的電力與基礎設施。這筆交易顯示,AI 算力競賽已延伸到電力、電網與建置速度,能源正式成為科技巨頭的核心戰場之一。
Thumbnail
A²IoT(AI + Android-based IoT)透過 Headless Android、OTA 更新與 MQTT 通訊,成功解決傳統 IoT 的碎片化與維運困難問題,廣泛應用於預知維護、智慧電表、車聯網、精準農業與智慧城市等領域,已具實證基礎,不易泡沫化。
Thumbnail
A²IoT(AI + Android-based IoT)透過 Headless Android、OTA 更新與 MQTT 通訊,成功解決傳統 IoT 的碎片化與維運困難問題,廣泛應用於預知維護、智慧電表、車聯網、精準農業與智慧城市等領域,已具實證基礎,不易泡沫化。
Thumbnail
從實際應用中學習 Python 程式設計,提升技能並建立作品集。文章提供八個循序漸進的 Python 專案範例,涵蓋檔案操作、網路爬蟲、Web 應用、自動化腳本、數據分析、遊戲開發、API 互動及應用程式部署,並附上實戰建議及學習資源。
Thumbnail
從實際應用中學習 Python 程式設計,提升技能並建立作品集。文章提供八個循序漸進的 Python 專案範例,涵蓋檔案操作、網路爬蟲、Web 應用、自動化腳本、數據分析、遊戲開發、API 互動及應用程式部署,並附上實戰建議及學習資源。
Thumbnail
想開服飾店圓夢,又想賺大錢長久經營,請回答下列10問題,如果和你想法符合,得1分!如果總分>3分以上,這篇文章請千萬不要錯過,也許你的貴人就此出現! 一、避開經營陷阱,曾踩過的坑,別再重蹈! 無論新手或老手,都可能會犯錯,以為批發靠直覺,老是選擇符合自己審美的衣服,以為只要放賣場就會銷售出去,這
Thumbnail
想開服飾店圓夢,又想賺大錢長久經營,請回答下列10問題,如果和你想法符合,得1分!如果總分>3分以上,這篇文章請千萬不要錯過,也許你的貴人就此出現! 一、避開經營陷阱,曾踩過的坑,別再重蹈! 無論新手或老手,都可能會犯錯,以為批發靠直覺,老是選擇符合自己審美的衣服,以為只要放賣場就會銷售出去,這
Thumbnail
在現代數位時代,網站開發成為一門藝術,具有無限的創造力和潛力。透過網站,我們能夠創造出一個豐富、互動且具有影響力的數位世界。網站設計師和開發者通過他們的技術和創意,能夠釋放出數位世界的力量,讓人們獲得無盡的資訊和體驗。 網站開發涉及多個層面,包括設計、程式編寫、內容編輯和使用者體驗等。設計師以他們
Thumbnail
在現代數位時代,網站開發成為一門藝術,具有無限的創造力和潛力。透過網站,我們能夠創造出一個豐富、互動且具有影響力的數位世界。網站設計師和開發者通過他們的技術和創意,能夠釋放出數位世界的力量,讓人們獲得無盡的資訊和體驗。 網站開發涉及多個層面,包括設計、程式編寫、內容編輯和使用者體驗等。設計師以他們
Thumbnail
打包網頁 在部署網站之前,我們要先來打包我們的網頁前端專案 為什麼要打包呢?什麼是打包呢?這有點像是編譯,如果你寫過 C 應該講到這裡就理解為什麼要這樣做了 在網頁開發中網頁內容最原始就是直接用 html 下去寫,但一個成熟的開發者會善用框架來開發,不論是用 vue 或 react,樣式的部分也會從
Thumbnail
打包網頁 在部署網站之前,我們要先來打包我們的網頁前端專案 為什麼要打包呢?什麼是打包呢?這有點像是編譯,如果你寫過 C 應該講到這裡就理解為什麼要這樣做了 在網頁開發中網頁內容最原始就是直接用 html 下去寫,但一個成熟的開發者會善用框架來開發,不論是用 vue 或 react,樣式的部分也會從
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News