【化蛹为蝶三】Nextjs 项目目录结构

2024-01-04 19:50
文章标签 项目 结构 目录 nextjs

本文主要是介绍【化蛹为蝶三】Nextjs 项目目录结构,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

上篇 我们唠了唠 Nextjs 项目如何使用 TypeScript、如何引入 Antd

还做了些预告,虽然咳咳…直接断更了 12 天

不过中间是去 la 了个双眼皮儿,休养带恢复了好些天,今儿就麻溜儿回来了

誓不烂尾

嗯~ o( ̄▽ ̄)o

今儿也不多更,保持每篇能聚焦一两个点就可

今天讲述下我从零到现在搭起来的 Nextjs 个人项目调整了三次的项目目录结构

嗯,以下正文

项目目录结构

初始目录

我在刚刚创建项目时,使用的是默认目录结构

手动罗列一下,大致如下:
image

调整一

在接入了 Koa,使用 Prisma 连接了 Mysql、Redis ,写了登录 JWT 前后端交互后,目录的合理性就凑合起来了

因为是同构架构,然后 config 和 utils 就有了一种现象:服务端/客户端依赖的配置或工具函数代码都放在一起,就很怪

而且接入 Koa 后增加 了一个文件:server.js

所以根据端的不同,对配置和代码进行了分割,此时项目目录如下:
carbon (9).png

主要是把 server 侧的目录归整了下,增加了 server 目录

然后把接口鉴权的中间件,服务端的数据库配置以及工具包都纳入了 server

Prisma 数据库 Schema 还留在外侧,没调整,server.js 决定会一直留在外侧

调整二
后来引入了 Graphql(apollo-server、apollo-client),外侧又多了一个服务端目录
carbon (8).png

也还好,然后随着数据模型多起来,愈来愈不方便尤其是 Graphql 太烦了我需要在四个目录分别新增对应模型目录和文件

所以第二次调整主要针对 Graphql ,顺带着把 Prisma、Graphql 和 Logs 目录扔进了 server,此时项目目录结构如下:
carbon (7).png

调整三

接下来就是看外侧目录些许不顺眼,比如外侧的 config 可能会被以为是整个项目的 config(但实际只是 client 的配置)

那同理 utils 也会被视为项目的工具,自然就增加了 client 目录以视区分,如下所示:

carbon (6).png

可… 可… 可是我看外侧的 components 和 styles 肯定更不顺眼了(难不成你俩不属于 client 的?)

那必然的,client 目录归整了一下,可惜 pages 目录由于 Nextjs 有依赖引用问题目录位置不能调整

所以到直到当下,个人 Nextjs 项目目录结构如下所示:
carbon (4).png

haha,顺手把 utils 目录改了名叫 tools

呐,今天关于 Nextjs 项目目录结构的分享就到这里了,感兴趣的小伙伴阔以关注一波,感恩感恩

后续预告:

  • 梳理一些小问题如:@根路径 Import引入 Less引入 KoaYaml 解析引入 Reset CSS日志记录与存储
  • 单独出一篇 Nextjs 引入 PrismaMysql2 存取数据
  • 单独出一篇 Nextjs 引入 Apollo-Server/Apollo-Client 使用 Graphql
  • Nextjs + Prisma + Graphql Demo 实践
  • Nextjs 如何使用 SessionCookie
  • Nextjs 基于 Graphql、PrismaJWT 登录鉴权

预告里的实操都做的差不多了,就差填坑了

今天就先填个小坑

另外可以小瞄下掘金前面发的

埋坑不断,也在不断填坑,诸君下期再见

Please follow me ^_^

vx👦:mmm7nnn

公号🐓:醒途

邮箱📧:suanzao@wacai.com(欢迎找我内推)

如果喜欢这个系列请给我一个点赞👍或者一个关注➕,诸君的支持是我创作的最大的动力

这篇关于【化蛹为蝶三】Nextjs 项目目录结构的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/570417

相关文章

Python 中 requests 与 aiohttp 在实际项目中的选择策略详解

《Python中requests与aiohttp在实际项目中的选择策略详解》本文主要介绍了Python爬虫开发中常用的两个库requests和aiohttp的使用方法及其区别,通过实际项目案... 目录一、requests 库二、aiohttp 库三、requests 和 aiohttp 的比较四、requ

SpringBoot项目启动后自动加载系统配置的多种实现方式

《SpringBoot项目启动后自动加载系统配置的多种实现方式》:本文主要介绍SpringBoot项目启动后自动加载系统配置的多种实现方式,并通过代码示例讲解的非常详细,对大家的学习或工作有一定的... 目录1. 使用 CommandLineRunner实现方式:2. 使用 ApplicationRunne

使用IntelliJ IDEA创建简单的Java Web项目完整步骤

《使用IntelliJIDEA创建简单的JavaWeb项目完整步骤》:本文主要介绍如何使用IntelliJIDEA创建一个简单的JavaWeb项目,实现登录、注册和查看用户列表功能,使用Se... 目录前置准备项目功能实现步骤1. 创建项目2. 配置 Tomcat3. 项目文件结构4. 创建数据库和表5.

Python项目打包部署到服务器的实现

《Python项目打包部署到服务器的实现》本文主要介绍了PyCharm和Ubuntu服务器部署Python项目,包括打包、上传、安装和设置自启动服务的步骤,具有一定的参考价值,感兴趣的可以了解一下... 目录一、准备工作二、项目打包三、部署到服务器四、设置服务自启动一、准备工作开发环境:本文以PyChar

多模块的springboot项目发布指定模块的脚本方式

《多模块的springboot项目发布指定模块的脚本方式》该文章主要介绍了如何在多模块的SpringBoot项目中发布指定模块的脚本,作者原先的脚本会清理并编译所有模块,导致发布时间过长,通过简化脚本... 目录多模块的springboot项目发布指定模块的脚本1、不计成本地全部发布2、指定模块发布总结多模

SpringBoot项目删除Bean或者不加载Bean的问题解决

《SpringBoot项目删除Bean或者不加载Bean的问题解决》文章介绍了在SpringBoot项目中如何使用@ComponentScan注解和自定义过滤器实现不加载某些Bean的方法,本文通过实... 使用@ComponentScan注解中的@ComponentScan.Filter标记不加载。@C

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

javafx 如何将项目打包为 Windows 的可执行文件exe

《javafx如何将项目打包为Windows的可执行文件exe》文章介绍了三种将JavaFX项目打包为.exe文件的方法:方法1使用jpackage(适用于JDK14及以上版本),方法2使用La... 目录方法 1:使用 jpackage(适用于 JDK 14 及更高版本)方法 2:使用 Launch4j(

更改docker默认数据目录的方法步骤

《更改docker默认数据目录的方法步骤》本文主要介绍了更改docker默认数据目录的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1.查看docker是否存在并停止该服务2.挂载镜像并安装rsync便于备份3.取消挂载备份和迁

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke