這些術語是網頁開發中的不同渲染方法,它們在用戶體驗、性能、SEO(搜尋引擎優化)等方面各有不同的應用。以下是對每個術語的簡單介紹:
SPA (Single Page Application):
單頁應用程序,使用者在整個網站中瀏覽時,頁面不會整個重新加載,而是透過 JavaScript 動態更新頁面內容。這種方式通常依賴於 AJAX 或 Fetch API 來從伺服器獲取數據並更新 DOM,而不重新載入頁面。
例子:使用 Vite 建立的 React 或 Vue 專案通常是 SPA。例如,使用 npm init vite@latest 指令創建一個新專案,並選擇 Vue 或 React 模板。這些專案會生成一個 SPA 應用程式,整個應用程序透過一個入口點載入(通常是 index.html),並使用 JavaScript 控制頁面上的路由和狀態。
我一剛開始學習JavaScript也都是先學習SPA
SSR (Server-Side Rendering):
伺服器端渲染,當用戶請求一個頁面時,伺服器會預先生成 HTML 並將其發送給用戶端。這可以縮短首次加載時間,因為用戶端獲得的是已渲染的頁面。
例子:使用 create-next-app 指令建立的 Next.js 專案。Next.js 預設支援 SSR,可以在頁面組件中使用 getServerSideProps 來進行伺服器端渲染。這樣,每次頁面請求時,Next.js 會在伺服器端獲取數據並渲染 HTML 再傳回給用戶端。
CSR (Client-Side Rendering):
客戶端渲染,初始載入時只獲取基本的 HTML 結構,然後使用 JavaScript 動態生成頁面內容。這種方式依賴於瀏覽器的 JavaScript 引擎來渲染頁面內容。
例子:Vite 建立的 React 或 Vue 專案也是 CSR 的例子,特別是在初始頁面加載後,所有的頁面更新都是由客戶端 JavaScript 控制的。這意味著只有一次性地載入 JavaScript 檔案後,所有的頁面變更(如路由切換)都是在客戶端處理的。
SSG (Static Site Generation):
靜態網站生成,頁面在構建階段預先生成靜態的 HTML 文件,這些文件可以直接由伺服器或 CDN 提供給使用者。這使得網站的首次載入速度非常快。
例子:使用 Next.js 建立的專案同樣支援 SSG。透過使用 getStaticProps 和 getStaticPaths,開發者可以在構建時預生成靜態頁面。例如,使用 create-next-app 指令創建的 Next.js 專案可以透過 SSG 來生成部落格文章頁面,這樣每次有新文章發布時,只需重新構建網站,新的靜態 HTML 會被生成。
每一種渲染方法都有其特定的應用場景,選擇哪種方法取決於應用的需求,例如是否需要更好的 SEO、更快的初始加載時間、或是更動態的用戶互動。