點擊上方的語言選單以切換語言
結論先說:
Vue 裡面多檔案(多 .vue) ≠ 傳統 HTML 的「多頁面」。
Vue 採用的是單頁應用(SPA)架構,用多個 view 元件取代多個 HTML 檔案。
| 項目 | 傳統 HTML 網站 | Vue 應用(SPA) |
|---|---|---|
| 檔案結構 | 每個頁面是一個 .html 檔案 |
整個網站通常只有一個 index.html |
| 導覽方式 | <a href="page2.html"> |
<router-link to="/page2"> |
| 頁面刷新 | 每次重新載入整個頁面 | 不會重新載入,只切換「視圖」 |
| 組件數量 | 每個 HTML 為獨立頁面 | 一個頁面可由多個 Vue 元件組成 |
| 維護方式 | 分頁維護、結構分散 | 集中式管理、邏輯統一 |
src/
├─ App.vue # 主框架 (共用導覽列、頁尾)
├─ main.js # 入口
├─ router/
│ └─ index.js # 路由設定
├─ views/ # 各個「頁面」
│ ├─ HomeView.vue
│ ├─ AboutView.vue
│ ├─ ContactView.vue
│ └─ ProductView.vue
└─ components/ # 可重用的元件
├─ Navbar.vue
└─ Footer.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
})
若你的專案原本有 10 個 HTML 頁面,那在 Vue 裡通常會有:
components/。這樣的架構可以:
原本的 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) 或預渲染技術。 |