这是CA架构在NestJS中实践的第二篇文章,上一篇文章《Clean Architecture在NestJS中的实践(一):项目初始化》已经完成了项目的初始化,和载入配置参数的功能,这篇文章我们来通过Docker搭建MongoDB数据库,再通过Mongoose来连接数据库。
Docker化MongoDB ​
要是不知道什么是Docker的朋友,可以先看看这篇文章《[Docker是什么?一篇Docker入门的好文章](/docker/d
这是CA架构在NestJS中实践的第二篇文章,上一篇文章《Clean Architecture在NestJS中的实践(一):项目初始化》已经完成了项目的初始化,和载入配置参数的功能,这篇文章我们来通过Docker搭建MongoDB数据库,再通过Mongoose来连接数据库。
要是不知道什么是Docker的朋友,可以先看看这篇文章《[Docker是什么?一篇Docker入门的好文章](/docker/d
在前一篇文章《[ChatGPT]Clean Architecture架构在NestJS中的实现》,我用ChatGPT生成了一些关于clean architecture的介绍,但是感觉不够通顺,也不够严谨,在这篇文章我会进行示例介绍,从零开始搭建一个Clean Architecture(简称CA)的NestJS项目,CA中关键的四个点:Entities(不是指代数据库的entity)、Use Cases 业务用例、Interface Adapater
Clean Architecture(简称CA)是一种软件架构设计思想,旨在解决软件系统的可维护性、可测试性、可扩展性等问题。CA的核心思想是:将应用程序分为不同的层,每个层都有自己的职责和依赖规则,层与层之间通过接口进行通信,依赖关系保持单向。这样做的好处是,系统的不同部分之间松耦合,易于维护和扩展,也方便进行单元测试和集成测试。
CA的基本结构通常由以下几个部分组成:
将如下这些具有相同类型的配置项,配置到系统的数据字典表中,方便系统维护,由超级管理员统一在后台进行数据字典维护,如果用户需求要增加变更配置项,只需要修改数据字典表记录即可,不需要修改代码。
相同类型的配置项:
在系统中创建一张记录数据字典类型,数据字典类型表记录数据的类型(例如用户状态)
创建一张表记录数据字典明细:(例如用户状态为正常 暂停)
数据字典明细表
NestJS 是一个基于 TypeScript 构建的现代化 Web 应用程序开发框架。它采用了模块化的体系结构,并且具有类似于 Angular 的注入器和依赖注入的功能。下面是一些 NestJS 的基础知识(ChatGPT生成):
控制器(Controller):控制器是处理客户端请求并返回响应的类。它们使用装饰器来定义路由和处理请求的方法。
模块(Module):模块是应用程序的基本构建块,它用于将应用程序的不同部分组织在一起。每个 NestJS 应用程序至少有一个模块。
服务(Service)
SEO(Search Engine Optimization)是一种优化网站,使其在搜索引擎排名中更好的技术。以下是一些SEO优化的基本要点:
关键字研究:通过了解目标受众搜索什么,确定合适的关键字和短语。
内容优化:确保网站内容符合目标受众的需求和搜索引擎的要求,包括标题、描述和关键字密度等。
网站结构优化:确保网站易于导航和理解,包括良好的网站架构、URL结构和内部链接等。
网站速度优化:确保网站快速加载,包括压缩图像、优化代码和使用CDN等。
移动友好性:确保网站能够适应各种移动设备的屏幕尺寸和不同的浏览器
在平时开发的过程中,特别是在遇到表单时候,我们经常需要为前端提供一些下拉选项的信息,这时候我们需要为前端提供下拉菜单的信息,让前端进行渲染。同时我们在数据库中存储的只可能是对应的编码,例子如下:
这里我们可以看到在搜索栏中,有一个下拉菜单。如果前端直接将value值写死在前端代码中,那么就破坏了低耦合原则,如果未来清查状态有增加或者管理员想要修改,那
玩过Java的同学,肯定知道**AOP(Aspect Oriented Programming)**切面编程的概念,NestJS中也能见到AOP的影子,今天就跟我一起学习下NestJS中的请求周期的概念,如下图:
在开始之前,我想先说一个猜想,也就是AOP实现的原理,像不像WordPress开发中的Hook机制?或者是React开发中的Hook?就是在特定的代码位置,加载执行用户
RBAC(Role-Based Access Control)是一种常用的权限管理模型,它基于角色进行访问控制,将用户的权限分配给角色,然后将角色分配给用户,从而实现对系统资源的保护和控制。在 RBAC 模型中,有以下四个主要的概念:
用户(User):使用系统的人员。
角色(Role):代表用户的职责、职位、权限等,一个用户可以拥有多个角色。
权限(Permission):代表对系统资源的访问控制,可以是访问控制列表(ACL)、角色或其他权限集合。
资源(Resource):需要受到访问控制
Dockerfile 是拿来构建自定义镜像的,并没有直接生成容器。只是可以在运行镜像时运行容器而已。
做容器编排以部署环境,是使用 docker-compose.yml 文件进行的,里面可能会需要用到 Dockerfile 。
Dockerfile是用来构建镜像的,若是想使用这个镜像的话还需要使用docker run命令来运行这个镜像,从而生成运行一个容器
docker-compose.yml是用来编排项目(服务-我)的,里面包含使用各种镜像创建的容器服务,使用的镜像可以是网络上的,也可以是根据使用Dockerfi