Nuxt 提供了一個強大的系統,允許你擴充套件預設檔案、配置等等。

Nuxt 的核心功能之一是層和擴充套件支援。你可以擴充套件預設的 Nuxt 應用程式以重用元件、實用工具和配置。層的結構幾乎與標準 Nuxt 應用程式相同,這使得它們易於編寫和維護。

用例

  • 使用 nuxt.configapp.config 在專案之間共享可重用配置預設
  • 使用 app/components/ 目錄建立元件庫
  • 使用 app/composables/app/utils/ 目錄建立實用工具和組合式函式庫
  • 建立 Nuxt 模組預設
  • 在專案之間共享標準設定
  • 建立 Nuxt 主題
  • 透過在大型專案中實施模組化架構和支援領域驅動設計 (DDD) 模式來增強程式碼組織。

使用

預設情況下,你的專案中的 ~~/layers 目錄中的任何層都將自動註冊為你的專案中的層。

層自動註冊在 Nuxt v3.12.0 中引入。

此外,每個層的 srcDir 的命名層別名將自動建立。例如,你將能夠透過 #layers/test 訪問 ~~/layers/test 層。

命名層別名在 Nuxt v3.16.0 中引入。

此外,你可以透過將 extends 屬性新增到你的 nuxt.config 檔案中來從一個層擴充套件。

nuxt.config.ts
export default defineNuxtConfig({
  extends: [
    // Extend from a local layer
    '../base',
    // Extend from an installed npm package
    '@my-themes/awesome',
    // Extend from a git repository
    'github:my-themes/awesome#v1',
  ],
})

如果你正在從私有 GitHub 倉庫擴充套件,你也可以傳遞一個身份驗證令牌

nuxt.config.ts
export default defineNuxtConfig({
  extends: [
    // per layer configuration
    ['github:my-themes/private-awesome', { auth: process.env.GITHUB_TOKEN }],
  ],
})
你可以透過在層源旁邊的選項中指定別名來覆蓋層的別名。
nuxt.config.ts
export default defineNuxtConfig({
  extends: [
    [
      'github:my-themes/awesome',
      {
        meta: {
          name: 'my-awesome-theme',
        },
      },
    ],
  ],
})

Nuxt 使用unjs/c12等等unjs/giget用於擴充套件遠端層。檢視文件以獲取更多資訊和所有可用選項。

層優先順序

使用多個層時,瞭解它們如何相互覆蓋非常重要

  1. extends 中的層 - 靠前的條目具有更高的優先順序(第一個覆蓋第二個)
  2. ~~/layers 目錄中自動掃描的本地層按字母順序排列(Z 覆蓋 A)
  3. 你的專案在堆疊中具有最高優先順序 - 它將始終覆蓋其他層
nuxt.config.ts
export default defineNuxtConfig({
  extends: [
    // Highest priority (among extends)
    '../base',
    // Medium priority
    '@my-themes/awesome',
    // Lower priority
    'github:my-themes/awesome#v1',
  ],
  // Your project has the highest priority
})

這意味著如果多個層定義相同的元件、配置或檔案,則將使用優先順序更高的那個。

層作者指南中閱讀更多關於層的資訊。

示例

內容風

一個輕量級的 Nuxt 主題,用於構建 Markdown 驅動的網站。由 Nuxt Content、TailwindCSS 和 Iconify 提供支援。