Nuxt 的核心功能之一是层和扩展支持。您可以扩展默认的 Nuxt 应用程序以重用组件、工具和配置。层的结构几乎与标准 Nuxt 应用程序相同,这使得它们易于编写和维护。
nuxt.config 和 app.config 在项目之间共享可重用的配置预设app/components/ 目录创建组件库app/composables/ 和 app/utils/ 目录创建实用工具和组合式库默认情况下,项目中 ~~/layers 目录中的任何层都将自动注册为项目的层。
此外,每个层的 srcDir 将自动创建命名层别名。例如,您将能够通过 #layers/test 访问 ~~/layers/test 层。
此外,您可以通过在 nuxt.config 文件中添加 extends 属性来扩展层。
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 仓库扩展,您还可以传递身份验证令牌
export default defineNuxtConfig({
extends: [
// per layer configuration
['github:my-themes/private-awesome', { auth: process.env.GITHUB_TOKEN }],
],
})
export default defineNuxtConfig({
extends: [
[
'github:my-themes/awesome',
{
meta: {
name: 'my-awesome-theme',
},
},
],
],
})
Nuxt 使用unjs/c12等等unjs/giget用于扩展远程层。请查阅文档以获取更多信息和所有可用选项。
当使用多个层时,了解它们如何相互覆盖非常重要
extends 中的层 - 靠前的条目具有更高的优先级(第一个覆盖第二个)~~/layers 目录中自动扫描的本地层 按字母顺序排列(Z 覆盖 A)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
})
这意味着如果多个层定义了相同的组件、配置或文件,则将使用优先级较高的那个。