繁体   English   中英

如何在 nuxtjs 3 中使用文件夹中的布局?

[英]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>

这将允许我们简单地从一种布局成功切换到另一种布局,即customother

在此处输入图像描述


如果您想要拥有 2 个目录,例如:

  • /layouts/custom.vue
  • /layouts/nested/other.vue (多嵌套 1 级)

然后,我没有实现一种简单的方法来管理有关布局的导入。

我从未见过这种配置,我什至会说,如果你有很多不同的布局(到嵌套它们的地步),那么我建议将你的内容包装在组件中而不是布局中。

因为布局是页面的非常简单的全局外部包装器,与复杂结构无关。 这更多是组件的目的。

这个功能是很久以前在 Nuxt 2 中添加的。

添加对 /layouts #1865 中的文件夹的支持

Nuxt.js 不尊重单独文件夹中的布局。 #1854

它在 nuxt 3 中的工作方式似乎不同,因为我面临同样的问题。

文件夹内的布局 Nuxt js 3

更新...

我检查了 Nuxt 3 的源代码,绝对不支持您尝试执行的操作。

示例: layouts/folder/custom.vue

然后在如下页面中使用它

<NuxtLayout name="folder/custom">some code ...</NuxtLayout>

我刚刚为这个功能发送了一个 PR。

添加对 /layouts #5796 中的文件夹的支持

希望它被接受,或者至少它给了某人添加这个的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM