[英]How to use layouts from a folder in nuxtjs 3?
我正在使用 NuxtJs 3 开发应用程序。在 nuxt 3 中,布局功能已更改。 我们可以通过<NuxtLayout name="layoutName">
使用布局,这个layoutName
在 layouts 文件夹中。 我的问题是,布局位于布局目录内的另一个文件夹中。 我该如何使用它?
不确定是否完全理解您最后想要的内容,但假设您想使用dir
属性更改layouts
目录的路径。
您可以在nuxt.config.ts
中执行以下操作
import { defineNuxtConfig } from 'nuxt'
export default defineNuxtConfig({
dir: {
layouts: 'fancyLayouts/nested'
}
})
然后,您的所有布局都将在该目录中可用
现在,我们有一个非常简单的other.vue
布局,如下所示( custom.vue
几乎相同)
<template>
<div>
<slot />
<br/>
<p>other layout</p>
</div>
</template>
我们可以在/pages/index.vue
中有以下内容
<script>
definePageMeta({
layout: false,
});
export default {
data: () => ({
layout: "custom",
}),
};
</script>
<template>
<NuxtLayout :name="layout">
<button class="border p-1 rounded" @click="layout === 'other' ? layout = 'custom' : layout = 'other'">
Switch layout
</button>
</NuxtLayout>
</template>
这将允许我们简单地从一种布局成功切换到另一种布局,即custom
或other
。
如果您想要拥有 2 个目录,例如:
/layouts/custom.vue
/layouts/nested/other.vue
(多嵌套 1 级)然后,我没有实现一种简单的方法来管理有关布局的导入。
我从未见过这种配置,我什至会说,如果你有很多不同的布局(到嵌套它们的地步),那么我建议将你的内容包装在组件中而不是布局中。
因为布局是页面的非常简单的全局外部包装器,与复杂结构无关。 这更多是组件的目的。
这个功能是很久以前在 Nuxt 2 中添加的。
它在 nuxt 3 中的工作方式似乎不同,因为我面临同样的问题。
更新...
我检查了 Nuxt 3 的源代码,绝对不支持您尝试执行的操作。
示例: layouts/folder/custom.vue
然后在如下页面中使用它
<NuxtLayout name="folder/custom">some code ...</NuxtLayout>
我刚刚为这个功能发送了一个 PR。
希望它被接受,或者至少它给了某人添加这个的想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.