專案中存在多個外觀相似但細節不同的 Header(導覽列),導致 CSS/JS 重複、維護困難。每新增一個功能,都需在多份 Header 代碼中同步修改。
header-base.css,差異樣式以 Modifier 或獨立檔案載入。<!-- HeaderBase.vue -->
<template>
<header class="header-base">
<div class="logo"><slot name="logo">預設 Logo</slot></div>
<nav class="main-nav"><slot name="main-nav"></slot></nav>
<div class="actions"><slot name="actions"></slot></div>
</header>
</template>
<script setup>
defineProps(['variant']) // 如 'home', 'admin', 'mobile'
</script>
<style module>
.header-base { display:flex; align-items:center; padding:0 20px; }
.logo { flex:1; }
.main-nav { /* 共用導覽樣式 */ }
.actions { /* 右側動作區 */ }
</style>
<!-- 具體頁面使用 -->
<HeaderBase variant="admin">
<template #logo><AdminLogo /></template>
<template #main-nav><AdminNav /></template>
<template #actions><UserMenu /></template>
</HeaderBase>
<!--# include virtual="/partials/header.html" -->header 區塊並延伸。<app-header> 元素,Shadow DOM 隔離樣式。Header 整合的核心是「找出共同點,參數化差異點」。透過元件化或模板化,能將維護成本從 O(N) 降為 O(1)。



