层级结构
Nuxt 提供了一个强大的系统,允许您扩展默认文件、配置等。
Nuxt 的核心功能之一是层和扩展支持。您可以扩展一个默认的 Nuxt 应用程序,以重用组件、工具和配置。层的结构与标准 Nuxt 应用程序几乎相同,这使得它们易于创建和维护。
用例
- 在项目之间共享可重用的配置预设,使用
nuxt.config
和app.config
- 使用
components/
目录创建组件库 - 使用
composables/
和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: [
'../base', // 从本地层扩展
'@my-themes/awesome', // 从已安装的 npm 包扩展
'github:my-themes/awesome#v1', // 从 Git 存储库扩展
]
})
如果您是从私人 GitHub 存储库扩展,还可以传递授权令牌:
nuxt.config.ts
export default defineNuxtConfig({
extends: [
// 对每个层的配置
['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 扩展远程层。请查看文档以获取更多信息和所有可用选项。