# 免費網站部署/架設資源推薦與比較
###### tags: `免費` `部署` `Heroku` `Github Pages` `Netlify`
## 含後端伺服器、最多環境支援:[Heroku](https://www.heroku.com/)
- 優點:
- 除了靜態/前端,也支援建立多數程式語言寫的後端伺服器
- **免費部署全端/後端專案應用程式(APP)的首選**
- 缺點:
- 免費版有啟動總時間與休眠開啟較長等限制
- **等待時間有時較長,使用者需要預期心理(否則可能以為是網站故障)**
- 建議方案:
- 如果是*前後端分離*的網站,**前端部分建議設計載入/讀取畫面**([舉例](https://codertw.com/%E5%89%8D%E7%AB%AF%E9%96%8B%E7%99%BC/249465/))來「防呆」
## 前端原生或簡易展示:[Github Pages](https://pages.github.com/)
- 優點:
- *直接使用Github上的儲存庫(Repo),不需要在其他網站平台設定*
- **沒有啟動時間與速度限制**(純顯示靜態檔案)
- 缺點:
- Github Pages**每個專案預設只對應同一個網域**(格式:yourname.github.io)
- 除對應跟目錄的前端專案,其他若使用React、Vue之類的*框架,且有使用路由(route)功能,只能選用hash模式*
- 否則會因為*網域根目錄不是專案根目錄,只是主網域底下的內容*(URL格式:yourname.github.io/projectName)
- 因**沒有獨立網域,hash模式以外的路由會無法正常運作**,且讀不到打包之後的CSS、JS、圖片等靜態檔案,無法顯示頁面內容
- 如果需要個別專案都有獨立網域,需要額外網域來個別設定(往往需要付費購買網域名稱)
- 建議方案:
- **只使用免費方案的話,僅適合架設單一[個人網站](https://gitbook.tw/chapters/github/using-github-pages)使用**,其餘專案則成為Github Pages同一網域的一部分
## 單獨前端專案或FaaS:[Netlify](https://www.netlify.com/)
- 優點:
- 同Heroku個別部署的APP,**APP預設都有獨立網域**,沒有Github Pages初始僅單一網域的問題
- **也沒有啟動時間與速度限制**
- 另支援**函式即服務** (Function as a Service, FaaS)的**無伺服器**(serverless)部署
- 補充,*類似的免費前端部署平台:[Vercel](https://vercel.com/)*
- 缺點:
- *使用history模式的路由時,[需要額外設置導向(redirect)檔案](https://docs.netlify.com/routing/redirects/),否則切換頁面會看到404錯誤*
- 建議方案:
- 需要單獨架設前端網站的首選,且部署方法與Github Pages類似,如自動隨Github指定分支更新