【化蛹为蝶三】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

相关文章

Vite 打包目录结构自定义配置小结

《Vite打包目录结构自定义配置小结》在Vite工程开发中,默认打包后的dist目录资源常集中在asset目录下,不利于资源管理,本文基于Rollup配置原理,本文就来介绍一下通过Vite配置自定义... 目录一、实现原理二、具体配置步骤1. 基础配置文件2. 配置说明(1)js 资源分离(2)非 JS 资

Three.js构建一个 3D 商品展示空间完整实战项目

《Three.js构建一个3D商品展示空间完整实战项目》Three.js是一个强大的JavaScript库,专用于在Web浏览器中创建3D图形,:本文主要介绍Three.js构建一个3D商品展... 目录引言项目核心技术1. 项目架构与资源组织2. 多模型切换、交互热点绑定3. 移动端适配与帧率优化4. 可

sky-take-out项目中Redis的使用示例详解

《sky-take-out项目中Redis的使用示例详解》SpringCache是Spring的缓存抽象层,通过注解简化缓存管理,支持Redis等提供者,适用于方法结果缓存、更新和删除操作,但无法实现... 目录Spring Cache主要特性核心注解1.@Cacheable2.@CachePut3.@Ca

SpringBoot通过main方法启动web项目实践

《SpringBoot通过main方法启动web项目实践》SpringBoot通过SpringApplication.run()启动Web项目,自动推断应用类型,加载初始化器与监听器,配置Spring... 目录1. 启动入口:SpringApplication.run()2. SpringApplicat

Python如何实现高效的文件/目录比较

《Python如何实现高效的文件/目录比较》在系统维护、数据同步或版本控制场景中,我们经常需要比较两个目录的差异,本文将分享一下如何用Python实现高效的文件/目录比较,并灵活处理排除规则,希望对大... 目录案例一:基础目录比较与排除实现案例二:高性能大文件比较案例三:跨平台路径处理案例四:可视化差异报

Springboot项目构建时各种依赖详细介绍与依赖关系说明详解

《Springboot项目构建时各种依赖详细介绍与依赖关系说明详解》SpringBoot通过spring-boot-dependencies统一依赖版本管理,spring-boot-starter-w... 目录一、spring-boot-dependencies1.简介2. 内容概览3.核心内容结构4.

Java集合中的链表与结构详解

《Java集合中的链表与结构详解》链表是一种物理存储结构上非连续的存储结构,数据元素的逻辑顺序的通过链表中的引用链接次序实现,文章对比ArrayList与LinkedList的结构差异,详细讲解了链表... 目录一、链表概念与结构二、当向单链表的实现2.1 准备工作2.2 初始化链表2.3 打印数据、链表长

在ASP.NET项目中如何使用C#生成二维码

《在ASP.NET项目中如何使用C#生成二维码》二维码(QRCode)已广泛应用于网址分享,支付链接等场景,本文将以ASP.NET为示例,演示如何实现输入文本/URL,生成二维码,在线显示与下载的完整... 目录创建前端页面(Index.cshtml)后端二维码生成逻辑(Index.cshtml.cs)总结

Spring Boot项目如何使用外部application.yml配置文件启动JAR包

《SpringBoot项目如何使用外部application.yml配置文件启动JAR包》文章介绍了SpringBoot项目通过指定外部application.yml配置文件启动JAR包的方法,包括... 目录Spring Boot项目中使用外部application.yml配置文件启动JAR包一、基本原理

Springboot项目登录校验功能实现

《Springboot项目登录校验功能实现》本文介绍了Web登录校验的重要性,对比了Cookie、Session和JWT三种会话技术,分析其优缺点,并讲解了过滤器与拦截器的统一拦截方案,推荐使用JWT... 目录引言一、登录校验的基本概念二、HTTP协议的无状态性三、会话跟android踪技术1. Cook