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會員
35內容數
李昀瑾的沙龍的其他內容
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
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
5 月將於臺北表演藝術中心映演的「2026 北藝嚴選」《海妲・蓋柏樂》,由臺灣劇團「晃晃跨幅町」製作,本文將以從舞台符號、聲音與表演調度切入,討論海妲・蓋柏樂在父權社會結構下的困境,並結合榮格心理學與馮.法蘭茲對「阿尼姆斯」與「永恆少年」原型的分析,理解女人何以走向精神性的操控、毀滅與死亡。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
本文分析導演巴里・柯斯基(Barrie Kosky)如何運用極簡的舞臺配置,將布萊希特(Bertolt Brecht)的「疏離效果」轉化為視覺奇觀與黑色幽默,探討《三便士歌劇》在當代劇場中的新詮釋,並藉由舞臺、燈光、服裝、音樂等多方面,分析該作如何在保留批判核心的同時,觸及觀眾的觀看位置與人性幽微。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
這是一場修復文化與重建精神的儀式,觀眾不需要完全看懂《遊林驚夢:巧遇Hagay》,但你能感受心與土地團聚的渴望,也不急著在此處釐清或定義什麼,但你的在場感受,就是一條線索,關於如何找著自己的路徑、自己的聲音。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
Thumbnail
《轉轉生》(Re:INCARNATION)為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,結合拉各斯街頭節奏、Afrobeat/Afrobeats、以及約魯巴宇宙觀的非線性時間,建構出關於輪迴的「誕生—死亡—重生」儀式結構。本文將從約魯巴哲學概念出發,解析其去殖民的身體政治。
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分以上,這篇文章請千萬不要錯過,也許你的貴人就此出現! 一、避開經營陷阱,曾踩過的坑,別再重蹈! 無論新手或老手,都可能會犯錯,以為批發靠直覺,老是選擇符合自己審美的衣服,以為只要放賣場就會銷售出去,這
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News