30
Re:Nuxt 100 天練習曲
Day 30

網站的公開設定檔 (app.config.ts)

Day 30·app.config.ts·響應式設定

昨天我們認識了專案的基石 app.vue。今天,我們要來認識另一個位於專案根目錄的重要檔案:app.config.ts

什麼是 app.config.ts?

如果 nuxt.config.ts 是網站的「引擎室」,那 app.config.ts 就是使用者可以觸摸到的「儀表板設定菜單」。

它專門用來存放您網站的公開設定,這些設定需要具備兩個重要特性:

1

完全公開

這些設定會被打包送到使用者的瀏覽器,所以絕對不要把任何機密資訊(例如 API 金鑰)放在這裡!

2

響應式 (Reactive)

您可以在應用程式執行時,動態地改變這些設定,而所有用到這些設定的地方都會自動更新。

最常見的用途就是網站的主題設定、標題、或社群連結等。

如何使用?

使用 app.config.ts 非常簡單,只需要兩步:

1

第一步:定義設定

在專案根目錄建立 app.config.ts,並使用 defineAppConfig 來定義您的設定。

app.config.ts
// app.config.ts
export default defineAppConfig({
  // 這裡我用了您的專案名稱,讓它更貼切
  title: '人類補完計劃',
  theme: {
    primaryColor: '#3B82F6', // 藍色
    dark: false
  }
})
2

第二步:在元件中取用

在任何元件中,都可以使用 useAppConfig() 這個 composable 來取得這些設定。

最棒的是,useAppConfig() 回傳的物件是響應式 (reactive)的。

Component.vue
<script setup>
const appConfig = useAppConfig();

function toggleTheme() {
  // 直接修改 appConfig 的值,所有用到它的地方都會自動更新
  appConfig.theme.dark = !appConfig.theme.dark;
}
</script>

<template>
  <div :class="{ dark: appConfig.theme.dark }">
    <h1 :style="{ color: appConfig.theme.primaryColor }">
      {{ appConfig.title }}
    </h1>
    <button @click="toggleTheme">
      切換成 {{ appConfig.theme.dark ? '淺色' : '深色' }} 模式
    </button>
  </div>
</template>

重點複習:app.config vs. runtimeConfig

我們在 Day 3 提過這兩個設定,現在讓我們再次加深印象:

app.config (今天學的)

完全公開的設定,例如主題顏色、網站標題

可以在執行時被程式碼動態改變

runtimeConfig (在 nuxt.config.ts 裡定義)

可以存放私密的設定,例如 API 金鑰

通常在建置後,透過環境變數來設定,執行時不應該被改變

今日總結

今天我們學會了使用 app.config.ts 來管理網站的公開、響應式設定。它非常適合用來處理佈景主題、標題等與 UI 顯示相關的配置,讓您的網站更具動態性。

預告

了解了 app.config.ts 後,明天我們來看看另一個更強大的設定檔:nuxt.config.ts。那裡才是 Nuxt 專案真正的「大腦中樞」。