层级结构
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 起引入。
此外,你可以通过在 nuxt.config
文件中添加 extends 属性来扩展某个图层。
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 来扩展远程图层。请查看文档以获取更多信息和所有可用选项。