Chapter 11 / Practical Stack

把一段 Facebook 技術貼文翻譯成架構圖:Laravel + PostgreSQL + Tailwind CSS + Vue + Vanilla JS

很多實務貼文一開口就丟出一串名詞,如果沒有分層地圖,很容易只剩下「我好像都聽過,但不知道它們怎麼一起工作」。 本章就用一句真實風格的網站描述,帶你把後端框架、資料庫、樣式系統、前端互動、SEO 與 AI 可讀內容放回同一個網站架構中。

案例原文與白話翻譯

案例貼文:

「個人網站是用 Laravel + PostgreSQL + Tailwind CSS,js 因為都是叫 AI 自己寫所以有 Vue 也有 Vanilla JS,因為也有做自動生成給 SEO 跟 AI 看的東西」

白話翻譯: 這個網站用 Laravel 當主要後端框架,PostgreSQL 當資料庫,Tailwind CSS 當樣式系統;互動功能有些用 Vue,有些只用 原生 JavaScript(Vanilla JS)。同時,網站還特別做了較容易被搜尋引擎與 AI crawler 讀取的內容輸出方式,例如伺服器端產生的 HTML、結構化頁面與可索引內容。

先把所有術語放到架構圖中

flowchart TB DB[(PostgreSQL 資料庫)] --> L[Laravel 路由 / 模板 / API / 內容生成] L --> HTML[伺服器端輸出 HTML SEO / AI 可讀頁面] L --> API[JSON API] API --> V[Vue 較複雜互動] API --> J[Vanilla JS 輕量互動] T[Tailwind CSS 樣式系統] --> HTML T --> V T --> J U[使用者 Browser] --> HTML U --> V U --> J C[Search Engine / AI Crawler] --> HTML
先抓大意: Laravel 與 PostgreSQL 負責網站的資料與伺服器邏輯;Tailwind CSS 管畫面風格;Vue 與 Vanilla JS 管前端互動;而「給 SEO 與 AI 看」通常意味著網站不只提供互動 UI,也會提供結構清楚、可直接被讀取的內容輸出

術語逐一拆解

名詞 類型 主要責任 在這個案例中的角色
Laravel 後端 Framework(PHP) 處理路由、模板、驗證、後台邏輯、內容生成、API 網站主體,很可能同時負責頁面輸出與資料介面
PostgreSQL 關聯式資料庫 儲存文章、標籤、用戶、設定、SEO 欄位等資料 內容與網站資料的長期儲存層
Tailwind CSS CSS framework / utility-first toolkit 快速組裝版型、間距、色彩與響應式設計 統一畫面風格,讓頁面與元件都能快速成形
Vue 前端 Framework / UI layer 處理較複雜的互動、狀態變化與元件邏輯 例如搜尋面板、即時篩選、互動卡片、後台小工具
Vanilla JS 原生 JavaScript 做較小型、較直接的瀏覽器互動 例如選單開合、複製按鈕、簡單表單驗證、class 切換
AI 自己寫 JS 開發流程 / 工作方式 代表程式碼是 AI 協作產出,不是網站執行時的技術層 這會影響程式風格是否混用,但不改變網站真正使用的執行技術
SEO / AI 可讀內容 內容輸出策略 讓搜尋引擎與 AI crawler 更穩定讀到主要內容、結構與 metadata 通常會搭配伺服器端 HTML、語意化標題、結構化資料與 sitemap

為什麼同一個網站會同時有 Vue 與 Vanilla JS?

Vue 適合的情境

  • 需要元件化的 UI。
  • 畫面狀態很多,會跟著資料變動。
  • 互動邏輯較長,想維持結構化管理。

Vanilla JS 適合的情境

  • 只是切換 class、開合選單、綁定按鈕。
  • 功能很小,不值得引入整個框架元件。
  • 頁面本來就是 Laravel 伺服器端輸出的 HTML。
這種混用其實很常見: 很多網站不是從零開始就是 SPA,而是以伺服器端頁面為主,只有某些局部區塊需要比較強的互動,因此會同時存在 Vue 與原生 JS。
AI 協作的提醒: 如果 JavaScript 常由 AI 協助產出,就更需要事先規定邊界,例如「Vue 只用在互動元件」、「Vanilla JS 只做小功能」,否則專案很容易變成寫法混雜、難以維護。

「做自動生成給 SEO 跟 AI 看」通常代表什麼?

伺服器端產生 HTML

讓 crawler 一打開頁面就能看到主要文字內容,而不是只看到空殼與大量前端腳本。

結構清楚的內容頁

使用語意化標題、摘要、FAQ、分類頁與內部連結,讓搜尋引擎與 AI 系統更容易理解主題。

metadata 與索引輔助

例如 title、description、Open Graph、sitemap、結構化資料(JSON-LD / Schema.org)。

做法 目的 對 SEO / AI 可讀性的幫助
預先生成文章頁 / 主題頁 讓內容可直接被索引 比完全靠 client-side render 更穩定
輸出語意化 HTML 讓內容結構清楚 方便 crawler 判讀標題層次與段落重點
提供 sitemap 與 metadata 幫助發現頁面與描述內容 提高索引效率,也讓摘要資訊更完整
保留摘要、FAQ、分類 讓主題被更清楚整理 方便搜尋引擎與 AI 系統擷取與引用

這句貼文背後的完整實務流程

sequenceDiagram participant User as 使用者 / Crawler participant Browser as Browser participant Laravel as Laravel App participant DB as PostgreSQL User->>Browser: 開啟文章頁 / 主題頁 Browser->>Laravel: 請求 HTML 頁面 Laravel->>DB: 讀取內容、摘要、SEO 欄位 DB-->>Laravel: 回傳資料 Laravel-->>Browser: 輸出 HTML + Tailwind 樣式 Browser-->>User: 顯示可讀內容 User->>Browser: 點選互動元件 / 篩選功能 Browser->>Laravel: fetch / AJAX 請求 API Laravel->>DB: 查詢互動資料 DB-->>Laravel: 回傳資料 Laravel-->>Browser: JSON 回應 Browser->>Browser: Vue / Vanilla JS 更新局部畫面
這張圖很重要: 它說明了一件事——SEO / AI 可讀內容前端互動 不是二選一。很多網站會同時保留可索引的 HTML 內容,再另外用 AJAX、Vue 或 Vanilla JS 做局部互動增強。

如果要把這個案例講給學生聽,可以怎麼總結?

  • Laravel 是網站的後端主體,負責把資料與頁面組織起來。
  • PostgreSQL 是資料儲存層,網站內容通常放在這裡。
  • Tailwind CSS 是畫面樣式工具,不負責資料與商業邏輯。
  • VueVanilla JS 可以共存:前者做較複雜互動,後者做輕量增強。
  • AI 幫忙寫 JS」描述的是開發流程,不是部署到網站上的執行環境。
  • 做給 SEO 跟 AI 看」通常代表網站會額外重視可索引、可閱讀、結構清楚的內容輸出。