嗨,各位鐵人夥伴! 👋
這是一篇專為新手設計的文章。如果你是經驗豐富的老手,可以跳過這篇,或者把它分享給你沒時間親自指導的新人,解放你的寶貴時間! 😉
本文會用最淺顯易懂的方式,從單體式架構,到前後端分離,再演進到 Isomorphic JavaScript (Universal JavaScript),讓完全沒有基礎的讀者也能輕鬆理解。
我們的討論將以 Web 應用系統為主,其核心通訊協定就是 HTTP 或 HTTPS。運作的關鍵概念是:請求 (Request) 與 回應 (Response)。
當使用者透過瀏覽器訪問你的網站時,會發起一個 HTTP 請求 (HTTP Request) 送到你的伺服器。這個請求通常包含:
GET
、POST
,說明這次請求的意圖。伺服器接收到請求後,會根據你寫好的邏輯,回傳一個 HTTP 回應 (HTTP Response)。這個回應通常包含:
200
表示成功,404
表示找不到頁面。延續前一章節提到的前端與後端技術,你應該已經有了基本概念。那「分離」是什麼意思呢?
簡單來說,就是將程式碼分成兩包,讓它們可以:
既然前後端分家了,它們如何協作呢?這就要談到 客戶端渲染 (Client-Side Rendering, CSR) 的運作方式:
💡 前後端分離是一種「架構模式」,而 CSR 是一種實現該架構的「渲染手段」。
「太麻煩了!我只是想快速寫個公司內部系統,還要學前端框架?」
如果這也是你的心聲,那單體式架構可能適合你。如同其名,單體式架構就是將 HTML、CSS、JavaScript 以及後端程式碼(如 Java、Python)全部打包在一個專案中,一起開發、一起部署。
你可能會想:「等等,HTML/CSS/JS 不是應該在瀏覽器執行嗎?」
沒錯!在單體架構中,它們的運作方式如下:
你可能會問:「聽起來很棒啊?為什麼大家不都用這個架構?」
事實上,Web 應用的趨勢是從單體式架構走向前後端分離。主要原因在於單體架構有幾個明顯的缺點:
當然,它也有優點:
單體架構(或說 SSR)有一個至今仍無法被完全取代的關鍵優勢:SEO (Search Engine Optimization)。
Google 的爬蟲程式會抓取網站內容來建立索引。如果你的網站對爬蟲不友善,在搜尋結果中的排名就會很低。
業界共識是,有 SEO 需求的頁面(如商品頁、部落格文章),最保險的做法就是採用 SSR。沒人敢拿產品的搜尋排名開玩笑!
有沒有辦法,既能享受 SSR 的 SEO 優勢,又能擁有 CSR 的流暢互動體驗與獨立開發的好處呢?
答案是肯定的,這要歸功於 Node.js 的出現。
Node.js 讓 JavaScript 不僅能在瀏覽器執行,也能在伺服器執行。這種「一套語言,通吃前後端」的能力,催生了如 Next.js、Nuxt.js 等現代前端框架。
這些框架賦予開發者極大的彈性,可以為不同頁面選擇最適合的渲染模式:
伺服器端渲染 (SSR)
客戶端渲染 (CSR)
這種讓同一份 JavaScript 程式碼能根據需求,選擇在伺服器或瀏覽器執行的技術,就被稱為 Isomorphic JavaScript (或 Universal JavaScript)。它完美地結合了兩種渲染模式的優點,讓我們能打造出既有良好 SEO、又具備極致使用者體驗的現代化應用程式。
其實甲方三種架構你都看得到,當然這包含了眾多因素在裡面,我在甲方看過單純CSR的前後端分離,單體架構,Universal JavaScript(CSR SSR混合),你或許還會聽到微服務架構(這比較難,我們在後面會很簡單的帶到),我個人認為, 不必認為誰一定優誰一定劣,調整好自己的心態比較重要