通过 100 多个技巧学习 Nuxt!

Layers

Nuxt 提供了一个强大的系统,允许你扩展默认文件、配置以及更多内容。

Nuxt 的核心功能之一是 layers 和扩展支持。你可以扩展默认的 Nuxt 应用程序以重用组件、utils 和配置。layers 结构几乎与标准的 Nuxt 应用程序相同,这使得它们易于编写和维护。

用例

  • 使用 nuxt.configapp.config 在项目之间共享可重用的配置预设
  • 使用 components/ 目录创建一个组件库
  • 使用 composables/utils/ 目录创建实用工具和组合式函数库
  • 创建 Nuxt 模块预设
  • 在项目之间共享标准设置
  • 创建 Nuxt 主题
  • 通过实施模块化架构并支持大型项目中的领域驱动设计 (DDD) 模式来增强代码组织。

用法

默认情况下,项目中 ~~/layers 目录中的任何 layers 将自动注册为项目中的 layers。

Layer 自动注册在 Nuxt v3.12.0 中引入。

此外,将自动为每个 layers 的 srcDir 创建命名的 layer 别名。例如,你将能够通过 #layers/test 访问 ~~/layers/test layer。

命名的 layer 别名在 Nuxt v3.16.0 中引入。

此外,你可以通过将 extends 属性添加到你的 nuxt.config 文件中来扩展 layer。

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

如果你从私有 GitHub 仓库扩展,你还可以传递身份验证令牌

nuxt.config.ts
export default defineNuxtConfig({
  extends: [
    // per layer configuration
    ['github:my-themes/private-awesome', { auth: process.env.GITHUB_TOKEN }]
  ]
})
你可以通过在 layer 源旁边的选项中指定别名来覆盖 layer 的别名。
nuxt.config.ts
export default defineNuxtConfig({
  extends: [
    [
      'github:my-themes/awesome',
      { 
        meta: {
          name: 'my-awesome-theme',
        },
      },
    ],
  ]
})

Nuxt 使用 unjs/c12unjs/giget 来扩展远程 layers。查看文档以获取更多信息和所有可用选项。

Layer Author Guide中阅读更多关于 layers 的信息。
观看 Learn Vue 关于 Nuxt Layers 的视频。
观看 Alexander Lichter 关于 Nuxt Layers 的视频。

示例

Content Wind Theme

一个轻量级的 Nuxt 主题,用于构建 Markdown 驱动的网站。由 Nuxt Content、TailwindCSS 和 Iconify 提供支持。