← 返回文章列表

網頁程式設計的技術差異,前端程式與後端程式比較

前言

網頁程式設計經歷了數十年的演變,從早期純粹的後端渲染,發展到今日百花齊放的前端框架生態系。理解這兩種開發模式的差異,不僅有助於選擇適合的技術架構,更能因應 SEO 需求做出正確決策。本文將從後端程式設計的起源談起,逐步介紹到現代前端框架,最後探討如何在 SPA(Single Page Application)架構下實現良好的 SEO 效果。

───

一、後端程式設計的演進

1.1 傳統後端渲染模式

在網際網路發展初期,網頁的渲染工作完全由伺服器端負責。當使用者發送請求時,伺服器會執行程式邏輯、查詢資料庫、將資料嵌入 HTML 模板,最後將完整的 HTML 頁面回傳給瀏覽器。這種模式稱為 Server-Side Rendering(SSR)。

1.2 經典後端技術

ASP(Active Server Pages)

微軟於 1996 年推出的伺服器端腳本引擎,使用 VBScript 或 JScript 撰寫。ASP 檔案以 .asp 為副檔名,伺服器會解析其中的程式碼並輸出 HTML。雖然功能有限,但對於 Windows 生態系的早期動態網頁開發扮演重要角色。

PHP(PHP: Hypertext Preprocessor)

1995 年誕生的 PHP,憑藉其簡單易學的特性,成為早期最普及的後端語言之一。PHP 檔案可以直接在 HTML 中嵌入程式碼,伺服器會執行這些程式碼並輸出結果。WordPress、Drupal 等知名 CMS 系統皆基於 PHP 開發。

<?php
  $title = "歡迎光臨";
  echo "<h1>$title</h1>";
?>

JSP(JavaServer Pages)

Sun Microsystems(現 Oracle)推出的 Java 技術,將 Java 程式碼嵌入 HTML 頁面中。JSP 適合企業級應用,具備強大的 Java 生態系支援,但學習門檻相對較高。

1.3 後端渲染的優缺點

項目說明
SEO 友善搜尋引擎爬蟲可直接取得完整 HTML 內容
首次載入快瀏覽器收到完整 HTML,可立即渲染
安全性高商業邏輯在伺服器執行,不會暴露給使用者
伺服器負擔每次請求都需要伺服器處理,擴展成本高
互動體驗頁面切換需重新載入,使用者體驗較差

───

二、前端程式設計的崛起

2.1 JavaScript 的發展歷程

1995 年,Brendan Eich 在 10 天內創造了 JavaScript,最初只是用於網頁的簡單互動效果。然而隨著瀏覽器效能提升與 Web 技術演進,JavaScript 逐漸成為網頁開發的核心語言。

關鍵里程碑:

  • 2006 年:jQuery 發布,簡化 DOM 操作與跨瀏覽器相容性
  • 2009 年:Node.js 問世,JavaScript 可在伺服器端執行
  • 2010 年:AngularJS 發布,開啟 SPA 時代
  • 2013 年:React 發布,引入虛擬 DOM 概念
  • 2014 年:Vue.js 發布,提供漸進式框架選擇

2.2 SPA(Single Page Application)架構

SPA 是一種網頁應用程式架構,使用者與應用程式互動時,頁面不會重新載入。瀏覽器初次載入時會取得一個基本的 HTML 殼層,後續所有內容都透過 JavaScript 動態渲染。

運作流程:

  1. 瀏覽器向伺服器請求頁面
  2. 伺服器回傳最小化的 HTML + JS bundle
  3. JavaScript 在瀏覽器端執行,動態生成 DOM
  4. 使用者互動時,透過 AJAX/Fetch 與 API 溝通
  5. 僅更新需要變動的 DOM 元素

2.3 主流前端框架詳解

Angular

Google 維護的完整前端框架,採用 TypeScript 開發。Angular 提供完整的解決方案,包含路由、表單驗證、HTTP 客戶端等,適合大型企業專案。

  • 優點:架構完整、適合大型團隊、TypeScript 原生支援
  • 缺點:學習曲線陡峭、檔案體積較大
  • 適用場景:企業級應用、管理後台
// Angular 元件範例
import { Component } from '@angular/core';

@Component({
  selector: 'app-user-list',
  template: `
    <ul>
      <li *ngFor="let user of users">
        {{ user.name }}
      </li>
    </ul>
  `
})
export class UserListComponent {
  users = [
    { name: 'Alice' },
    { name: 'Bob' },
    { name: 'Charlie' }
  ];
}

React

Facebook(Meta)開發的 JavaScript 函式庫,專注於 UI 層的渲染。React 使用虛擬 DOM 技術,透過 Diff 演算法最小化實際 DOM 操作,大幅提升效能。

  • 優點:生態系豐富、學習資源多、彈性高
  • 缺點:需搭配其他函式庫組成完整方案
  • 適用場景:各種規模的網頁應用、行動端
// React 元件範例
import { useState, useEffect } from 'react';

function UserList() {
  const [users, setUsers] = useState([]);

  useEffect(() => {
    fetch('/api/users')
      .then(res => res.json())
      .then(data => setUsers(data));
  }, []);

  return (
    <ul>
      {users.map(user => (
        <li key={user.id}>{user.name}</li>
      ))}
    </ul>
  );
}

export default UserList;

Vue.js

尤雨溪建立的漸進式 JavaScript 框架,設計理念是「漸進增強」。Vue 可從簡單的 CDN 引入開始,逐步擴展到完整的 SPA 架構。

  • 優點:學習門檻低、文件友善、效能優異
  • 缺點:生態系規模較 React 小
  • 適用場景:中小型專案、快速原型開發
<!-- Vue 單檔元件範例 -->
<template>
  <ul>
    <li v-for="user in users" :key="user.id">
      {{ user.name }}
    </li>
  </ul>
</template>

<script setup>
import { ref, onMounted } from 'vue';

const users = ref([]);

onMounted(async () => {
  const res = await fetch('/api/users');
  users.value = await res.json();
});
</script>

<style scoped>
li {
  padding: 8px 0;
  border-bottom: 1px solid #eee;
}
</style>

框架比較表:

特性AngularReactVue
學習曲線陡峭中等平緩
框架類型完整框架UI 函式庫漸進式框架
語言TypeScriptJS/TSJS/TS
適合規模大型專案各種規模中小型專案
生態系完整內建最豐富成長中

───

三、前端渲染的 SEO 挑戰

3.1 搜尋引擎爬蟲的運作方式

搜尋引擎(如 Google、Bing)使用爬蟲程式來索引網頁內容。傳統爬蟲只能解析 HTML 原始碼,無法執行 JavaScript。雖然現代 Googlebot 具備 JavaScript 執行能力,但這需要額外的渲染佇列,處理時間與資源消耗都較高。

爬蟲類型比較:

爬蟲類型運作方式SPA 支援
傳統爬蟲僅解析 HTML 原始碼❌ 不支援
現代爬蟲可執行 JavaScript⚠️ 有限支援
渲染佇列延遲處理複雜頁面✅ 支援(耗時)

3.2 SPA 的 SEO 問題

純前端渲染的 SPA 應用程式存在以下 SEO 問題:

  • 首次載入空白:HTML 殼層幾乎沒有內容,爬蟲可能看不到文字
  • 中繼資料缺失:title、description 等無法動態設定
  • 社交分享:Facebook、Twitter 等無法正確抓取預覽資訊
  • 索引延遲:JavaScript 執行需要時間,可能影響索引效率

3.3 解決方案:SSR 與 SSG

為了解決 SPA 的 SEO 問題,現代前端框架提供了伺服器端渲染(SSR)和靜態網站生成(SSG)兩種方案。

SSR(Server-Side Rendering)

伺服器端渲染是在伺服器預先執行 JavaScript,生成完整 HTML 後再發送給客戶端。

// Nuxt.js (Vue) SSR 設定
export default defineNuxtConfig({
  ssr: true,  // 預設啟用 SSR
  app: {
    head: {
      title: '我的網站',
      meta: [
        { name: 'description', content: '網站描述' }
      ]
    }
  }
});
// Next.js (React) SSR 範例
export default function Page({ data }) {
  return <div>{data.title}</div>;
}

// 伺服器端取得資料
export async function getServerSideProps() {
  const res = await fetch('https://api.example.com/data');
  const data = await res.json();
  return { props: { data } };
}

SSG(Static Site Generation)

靜態網站生成是在建置時預先產生所有頁面的 HTML 檔案。

// Nuxt.js 預渲染設定
export default defineNuxtConfig({
  nitro: {
    prerender: {
      routes: ['/', '/about', '/contact']
    }
  }
});
// Next.js SSG 範例
export async function getStaticProps() {
  const data = await getData();
  return {
    props: { data },
    revalidate: 60  // ISR: 每 60 秒重新驗證
  };
}

ISR(Incremental Static Regeneration)

ISR 是 SSG 的延伸,允許在固定時間間隔後重新生成靜態頁面,結合了靜態頁面的效能與動態內容的即時性。

───

四、SEO 最佳實踐

4.1 Meta 標籤設定

正確設定 Meta 標籤是 SEO 的基礎工作:

<head>
  <!-- 基本標籤 -->
  <title>網頁標題 | 網站名稱</title>
  <meta name="description" content="網頁描述,建議 150-160 字元">
  <meta name="keywords" content="關鍵字1, 關鍵字2, 關鍵字3">
  
  <!-- Open Graph -->
  <meta property="og:title" content="分享標題">
  <meta property="og:description" content="分享描述">
  <meta property="og:image" content="https://example.com/image.jpg">
  <meta property="og:url" content="https://example.com/page">
  <meta property="og:type" content="article">
  
  <!-- Twitter Card -->
  <meta name="twitter:card" content="summary_large_image">
  <meta name="twitter:title" content="分享標題">
  <meta name="twitter:description" content="分享描述">
  <meta name="twitter:image" content="https://example.com/image.jpg">
</head>

4.2 結構化資料

使用 JSON-LD 格式加入結構化資料,幫助搜尋引擎理解頁面內容:

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@type": "Article",
  "headline": "文章標題",
  "author": {
    "@type": "Person",
    "name": "作者名稱"
  },
  "datePublished": "2026-03-25",
  "dateModified": "2026-03-25",
  "image": "https://example.com/image.jpg",
  "publisher": {
    "@type": "Organization",
    "name": "網站名稱",
    "logo": {
      "@type": "ImageObject",
      "url": "https://example.com/logo.png"
    }
  }
}
</script>

4.3 其他 SEO 要點

  • 語意化 HTML:正確使用 h1-h6、article、section、nav 等標籤
  • 圖片優化:加入 alt 屬性描述、壓縮圖片尺寸、使用 WebP 格式
  • URL 結構:使用清晰、可讀的 URL 路徑(如 /articles/seo-guide)
  • 網站地圖:提供 sitemap.xml 供爬蟲索引
  • robots.txt:設定爬蟲存取權限
  • Core Web Vitals:確保頁面載入效能符合 Google 標準
  • 行動裝置優先:確保響應式設計在手機版正常運作
  • Canonical URL:避免重複內容問題

───

五、結論

網頁程式設計從傳統後端渲染演進到現代前端框架,每個階段都有其存在的價值與適用場景。選擇技術架構時,應考量以下因素:

考量因素建議架構
SEO 需求高後端渲染 / SSR / SSG
互動體驗要求高前端框架 + SSR
內容變動頻繁後端渲染 / SSR
開發團隊規模小Vue.js + Nuxt / PHP + WordPress
企業級應用Angular / React + Next.js
快速原型開發Vue.js / React

現代前端框架透過 SSR、SSG、ISR 等技術,已能兼顧 SEO 需求與使用者體驗。開發者應根據專案特性、團隊能力、維護成本等因素,選擇最適合的技術方案。無論選擇哪種架構,持續關注 SEO 最佳實踐、Core Web Vitals 指標,以及使用者體驗,都是成功的關鍵。