讓你輕鬆免費架站的 JAMstack 到底是什麼巫術?

Thu Nov 05 2020

前端開發 JAMstack

其實很多時候,網站的需求真的非常單純,沒事不會去改頁面的架構與設計、沒有太多的功能要求,而且最核心的關鍵點是:也沒有太多的預算。

這些網站的需求,可能只是要一個精美的官方網站,可以更新一些最新消息、常見問答。

有可能是放一些自己的作品集、寫一些文章當一個小小自媒體。

甚至很多時候,預算的限制很有可能是連租用一台堪用的主機都會面有難色的,更別提要定期繳交系統維護費了

而在這種場合,使用 WordPress 等需要資料庫的 CMS 其實就是一個不合成本的作法,況且 WordPress 最可怕的成本才不是伺服器與資料庫呢,最昂貴的是維護系統的人力成本好嗎!

# 純靜態的網站使用者改不動

但問題又來了,如果純切版做出一個靜態網站,似乎又太沒有彈性了...

一位室內設計師,想放上他最新的作品與成果卻無能為力

一位執業多年的醫師,想更新他最新的門診時間也只能透過開發人員來處理

就不能有一個後台 CMS 做內容管理嗎!?

# 搞後端搭資料庫又不合成本

好吧!不然就弄個後台管理介面,不管是前後端分離還是義大利麵模式,串個資料庫給總行了吧?

我說,你是不是忘了一個前提?

預算的限制,很有可能是連租用一台堪用的主機都會面有難色的

# JAMstack

講半天,難道就沒有一個折衷的辦法嗎?

有啊,當然有啊,這種文章哪次敢跟你說沒有的?

首先呢,我先上一段引文來讓文章看起來高大上一點

A modern web development architecture based on client-side JavaScript, reusable APIs, and prebuilt Markup — Mathias Biilmann (CEO & Co-founder of Netlify)

JAMstack 說白了就是一種構建網站的方法,它拉近了靜態網站與 SSR 之間的功能差距,同時保持了靜態網站高性能、低成本、高安全性的關鍵優勢,同時也保有了非常好的開發者體驗。

而 JAMstack 的 JAM 就是 JavaScript、API 和 Markup 的簡稱。

  • JavaScript 處理各種功能的開發
  • API 讓 JavaScript 可以使用第三方服務或自訂的功能。
  • Markup 則是使用標記語言來提供網站的內容

# JAMstack 的重點是不依賴 Web Server

我在上面提到了JAMstack 的架構核心是 JavaScript、API 和 Markup ,但這並不代表要集滿三大要素才能稱為 JAMstack 喔。

因為 JAMstack 不是一種特定的技術,更像是一種架構模式,但這個模式中最關鍵的就是不使用 Apache 或 Express 之類的 Web Server。

因為不管你是用預渲染、靜態網站生成器甚至是工人智慧親手打造,一個使用 JAMstack 架構的網站,一定都已經將所有網站的內容預先產製好了,因此當使用者連線時,根本就不需要執行 Web Server 來做頁面的運算。

# 為什麼要用 JAMstack ?

其實簡單來說,我認為主要就是下面的幾種原因:

  1. 高性能

    因為當網站已經在部署的時候就都完成了,省去的伺服器運算、資料庫查詢時間都是對使用者體驗的提升,而且因為內容都是靜態的,還可以透過 CDN 來提供更快的連線速度。

  2. 高安全性

    當你將單純的靜態網站部署到專業的網站託管服務,各種可能需要的 API 也都利用第三方服務來架構,那你可以被攻擊的突破口不就大幅度地縮小了嗎,畢竟資安這檔事還是交給專業的來吧。

  3. 超便宜。

    這個答案有沒有很簡單很暴力啊?靜態網站的託管服務真的超便宜,甚至有一大堆都是免費的高優質選項呢!

    如果真要說什麼時候不適合 JAMstack 呢?大概就是很有錢的時候吧。

# VuePress 靜態網站生成器

其實現在已經有許多的工具可以幫我們架設出 JAMstack 所需要的網站結構,而且因為不限定特定的技術,所以產出方法也就有百百種,本站採用的工具 VuePress 這個靜態網站生成器。

而為什麼選擇 VuePress 的原因,以及它到底有什麼特色與優勢,就請見下回分曉啦!