Let's building a Portfolio using Astro.js
製作個人前端作品集 - 實作篇
創立專案
本篇文章將會以自己的作品集網站為範例,使用 Astro.js 作為靜態生產器,有效率的管理與生成網站中的所有頁面,借助這個機會來展示這個框架好用與強大的地方。開始之前你可以先閱讀上一篇文章:製作個人前端作品集 - 準備篇 提前為整個作品集規劃,或是設置一個合適的開發環境:為 Astro 設置 ESLint 與 Prettier。
首先在終端上使用 Astro 創建工具讓它初始化決定你要的設定:
待專案都設定創建好之後可以 cd ./專案名稱
進入專案,使用 npm run dev
啟動開發伺服器,並使用 ctrl+c
來關閉。
Astro 基礎
在撰寫網站之前使用 Astro 還是有一些知識點需要補齊,並不會太複雜,這裡我會簡單的介紹一下:
現在啟動開發伺服器會發現整個畫面除了一個「Astro」的標題之外什麼都沒有,這是因為前面選擇的是空白的專案。專案裡面有不同的預設產生的檔案與資料夾,有著它們各自的用途:
src/*
: 專案原始碼
public/*
: 未處理資源(與 Vite public🔗 一模一樣,靜態資源可以放置於此)
package.json
:紀錄專案套件資訊
astro.config.mjs
:Astro 設定檔
tsconfig.json
:TypeScript 設定檔
在 Astro.js 中創建頁面非常的簡單,它是基於檔案的路由,可以直接撰寫 .astro
、.html
、 .mdx
或 .md
檔案放置到資料夾中,生成時就會依照檔案的名稱與位置產生出對應的靜態頁面,舉例來說:
- 創建一個新檔案:
src/pages/foobar.astro
,等於創建一個新頁面在 /foobar
底下。
- 創建一個新檔案到 hello 資料夾中:
src/pages/hello/world.astro
,等於創建一個新頁面在 /hello/world
底下
元件腳本與模板
.astro
檔案的開頭都會有三槓柵欄,稱為「元件腳本 Component Script」,當該 Astro 元件創建時就會執行柵欄裡面的內容,例如可以在裡面:
- 引入其他 Astro 元件
- 引入其他框架,像是 React
- 引入其他資料,像是 JSON
- 獲取第三方的資料
- 創建變數用於模板中
而在柵欄底下的區塊就是「元件模板 Component Template」,可以撰寫 HTML 於此。而要把元件腳本的資料使用在元件模板上你可以使用類似於 JSX 的語法,舉例來說可以將一個陣列使用 map
方法轉換成一個 HTML 列表:
教學到這裡相信你會發現要做的就是撰寫基本的 HTML 與 JavaScript,你已經掌握 .astro
檔案的威力了!
製作頁面
一個網站通常會有許多重複的片段,使用先前學到的方法可以把網頁拆分成一塊一塊的元件檔案,要使用的時候再引入就好,這裡我創建了用於網站整體的 Base🔗 元件,裡面分別再引用了 Navbar🔗 與 Footer🔗 元件,以及還有頁面開頭的 Banner🔗 元件。
這樣一個首頁就製作出來了,是不是開發環境很簡潔乾淨呢?接著你可以運用相同的技巧去製作關於🔗與作品🔗甚至是 404 頁面🔗,道理是一模一樣的!