我最近用Next.js开始了我的第一个项目,从那时起,我的pages
目录增长了很多。现在,我想将页面分开并将它们分组为模块,最后得到类似'src/modules/*/pages/*'
的内容。
在研究这个主题时,我遇到了exportPathMap
,我可以在next.config.js
文件中包含一个函数,然后将自定义路径Map到我的页面,但似乎我需要为我创建的每个页面添加一个新路径,这并不理想。我想给予Next一个表达式,比如'src/modules/*/pages/*'
,让它为我解析页面和路由(就像你在使用TypeORM时在ormconfig.json
文件中Map实体一样)。
我想我可以直接在pages
中对页面组件进行分组,就像pages/a-module/*
一样,但我也有组件、钩子和其他逻辑,我想将它们隔离到模块中。我也可以尝试使用Node的fs
来遍历我的项目文件结构并Map页面文件夹,但如果可能的话,我想避免这样做。
3条答案
按热度按时间v2g6jxz61#
您可以使用符号链接。每个模块都需要一个,但模块中的每个嵌套路径都不需要一个。您的目录结构如下所示:
最后会有路由:
但我不知道这对你有什么好处。现在,您的
modules
文件夹将具有与pages
相同的混乱。您不必在pages
中的文件中包含所有组件内容。它可以是简单的:wsewodh22#
这是Next.js团队不允许的,原因在这篇文章和那里引用的文章中解释。在决定是否真的要破解文件结构之前,您可以阅读一些讨论。
iecba09b3#
正如@Roman Mkrtchian提到的,你不应该这样做。我的建议是,如果你想像我一样将你的文件组织成模块,创建一个类似于下面的文件结构:
你应该采取另一种方法。正如@erich2k8所说,您不需要将所有组件内容都放在
/pages
内部的文件中,您可以创建与上面相同的结构,但将/pages
直接添加到src
:例如,在
src/pages/foo/one.jsx
中,您将导入src/modules/foo/pages/one
,如下所示:是的,您仍然需要为在
/modules
中创建的每个页面创建一个新文件,但它使您避免了扰乱Next行为的真正糟糕的时间。