點擊上方的語言選單以切換語言

Vue 與多頁 HTML 架構的差異與對應

結論先說: Vue 裡面多檔案(多 .vue) ≠ 傳統 HTML 的「多頁面」。 Vue 採用的是單頁應用(SPA)架構,用多個 view 元件取代多個 HTML 檔案。

一、傳統 HTML 網站 vs Vue 應用(SPA)

項目 傳統 HTML 網站 Vue 應用(SPA)
檔案結構 每個頁面是一個 .html 檔案 整個網站通常只有一個 index.html
導覽方式 <a href="page2.html"> <router-link to="/page2">
頁面刷新 每次重新載入整個頁面 不會重新載入,只切換「視圖」
組件數量 每個 HTML 為獨立頁面 一個頁面可由多個 Vue 元件組成
維護方式 分頁維護、結構分散 集中式管理、邏輯統一

二、Vue 專案的常見結構

src/
├─ App.vue                # 主框架 (共用導覽列、頁尾)
├─ main.js                # 入口
├─ router/
│   └─ index.js           # 路由設定
├─ views/                 # 各個「頁面」
│   ├─ HomeView.vue
│   ├─ AboutView.vue
│   ├─ ContactView.vue
│   └─ ProductView.vue
└─ components/            # 可重用的元件
    ├─ Navbar.vue
    └─ Footer.vue

三、Vue Router:Vue 的「多頁面導航系統」

在傳統網站中:

<a href="page2.html" target="_blank">開新頁</a>

在 Vue 中:

<router-link to="/page2" target="_blank">開新頁</router-link>

router/index.js 中設定對應頁面:

import { createRouter, createWebHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue'
import Page2View from '../views/Page2View.vue'

const routes = [
  { path: '/', component: HomeView },
  { path: '/page2', component: Page2View },
]

export default createRouter({
  history: createWebHistory(),
  routes
})

四、是否需要「很多 Vue 檔案」?

若你的專案原本有 10 個 HTML 頁面,那在 Vue 裡通常會有:

這樣的架構可以:

五、簡單範例對照

原本的 HTML 架構:

index.html
about.html
contact.html

Vue 架構轉換後:

src/
  views/
    HomeView.vue
    AboutView.vue
    ContactView.vue
  components/
    Navbar.vue
  App.vue

共用導覽列範例:

<!-- Navbar.vue -->
<nav>
  <router-link to="/">首頁</router-link>
  <router-link to="/about">關於我們</router-link>
  <router-link to="/contact">聯絡我們</router-link>
</nav>

六、結論整理

常見問題與誤區 專業解答
能否製作十頁以上的網站? ✅ 可以。透過 Vue Router 進行路由管理,非常適合大型多頁面應用。
是否等同於傳統多個 HTML? ❌ 不同。SPA 僅需一個 index.html,透過 JavaScript 動態切換元件 (Component) 來改變內容。
能否在新分頁開啟特定頁面? ✅ 可以。使用 <router-link target="_blank"> 即可,但新分頁會重新初始化 Vue 實例,全域狀態 (State) 無法直接共用。
主要效能優勢 局部刷新。換頁時無需重新下載 CSS 與共用 JS,使用者體驗極為流暢。
開發與維護挑戰 ⚠️ SEO 優化。純 SPA 對搜尋引擎爬蟲較不友善,若有 SEO 需求需改用 SSR (如 Nuxt.js) 或預渲染技術。
分享到 Facebook | 分享到 Line | 分享到 X