iT邦幫忙

2026 iThome 鐵人賽

DAY 30
0

終於來到專案部署啦!

這次的演算法視覺化平台使用 Vue 3 + Vite + TypeScript 開發,原本打算使用 GitHub Pages 的 Deploy from a branch,但最後決定改用 GitHub Actions,為什麼呢?


Deploy from a branch 為什麼失敗?

一開始我在 GitHub Pages 選擇 Deploy from a branch,並指定 main 分支。
https://ithelp.ithome.com.tw/upload/images/20261013/20184088zIA22NVVgC.png

結果開啟網站後,Console 出現:

Failed to load resource: 404
/src/main.ts

後來才知道,這種方式會發布指定分支中的網站檔案,但不會自動執行 Vite Build。

我的 main 分支放的是 Vue 原始碼,而不是編譯後的靜態檔案,因此網站無法正常顯示。

兩種部署方式有什麼差別?

Deploy from a branch GitHub Actions
部署來源 分支根目錄或 /docs Workflow 指定的檔案
自動執行 Vite Build 不會 可設定
Vue + Vite 可以 可以

其實 Deploy from a branch 也能部署 Vue,只要先 Build,再將產生的靜態檔案放到指定分支的根目錄或 /docs 即可。

但我希望每次 Push 程式碼後,都能自動完成 Build 和部署,所以最後選擇 GitHub Actions。


GitHub Actions 部署前,需要設定什麼?

1. Vite 設定 base

因為 Repository 名稱是 Algorithm,網站路徑會是:

https://使用者名稱.github.io/Algorithm/

因此在 vite.config.ts 加上:

export default defineConfig({
  base: '/Algorithm/',
})

否則網站可能從 /assets/ 而不是 /Algorithm/assets/ 尋找資源,導致 404。

2. Router 改成 Hash 模式

原本使用 createWebHistory(),但 GitHub Pages 不會自動將 SPA 子路徑導回 index.html,重新整理時可能出現 404。

所以改成:

createWebHashHistory()

雖然網址會多出 #,但路由可以交給 Vue Router 處理。

3. 建立 GitHub Actions Workflow

在 Repository 根目錄建立 .github/workflows/deploy.yml,設定自動化流程:

Push → 安裝依賴 → Vite Build → 部署 dist

另外還需要注意:

  • Node.js 版本符合專案需求,我使用 Node 24。
  • 部署目錄指定為 dist。

4. 重新執行 GitHub Actions Workflow

完成設定後,進入 Repository → Settings → Pages,將 Source 改成 GitHub Actions。

接著到 Repository → Actions,找到部署的 Workflow,點選 Re-run all jobs 重新執行。

等待 Build 和 Deploy 都成功後,終於可以正常看到網站畫面啦!
https://ithelp.ithome.com.tw/upload/images/20261013/20184088iEB0KBqZBW.png
https://ithelp.ithome.com.tw/upload/images/20261013/20184088FWC9nebAyr.png


完整實作紀錄


30 天完賽心得

終於經過這 30 天啦!!!沒想到一個月就這樣結束了,過得好充實 XD

回想一開始,自己連演算法、資料結構都沒有學過,現在已經慢慢理解 Bubble Sort、Quick Sort、Dijkstra,甚至把它們做成視覺化平台。

雖然只有三種演算法,但對我來說已經是很重要的第一步!

最後想回到 Day 1 問自己的問題:

「演算法,究竟能為前端帶來什麼?」

經過這 30 天,我發現現在的前端開發,其實真的不太需要自己實作這些經典演算法。

排序有 JavaScript 內建方法,搜尋通常交給後端,路線規劃也有現成的 API 可以使用。

既然都有現成的工具,那學演算法還有意義嗎?

我覺得有,但意義可能跟我一開始想的不太一樣。

這次學習讓我開始理解,原來很多複雜的邏輯,都是透過條件判斷、迴圈、遞迴,一步一步組合而成。

學習演算法不一定是為了以後自己重新實作,而是練習如何拆解問題、理解程式的執行過程。

雖然目前學到的還只是皮毛,但至少當我再次遇到複雜邏輯時,能試著從不同角度思考,而不只是想著怎麼把功能做出來。

這就是這 30 天帶給我最大的收穫!

30 天鐵人賽,完賽啦!!! /images/emoticon/emoticon34.gif


參考資料


上一篇
【Day 29】學完三種演算法後,回頭看看它們的效率到底差在哪?
系列文
看得到的演算法:用 Vue 3 打造演算法互動視覺化平台 共 30 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言