GraphQL + 클린 아키텍처 상용구
영감
Clean Architecture은 깨끗하고 구조적이며 유지 관리 가능한 프로젝트를 구축하고자 하는 개발자를 위한 유용한 안내서입니다. SOLID 원칙의 문자 L을 사용하면 비즈니스 및 시스템의 핵심을 건드리지 않고도 종속 구성 요소를 쉽게 교체할 수 있습니다. 예를 들어 많은 프레임워크(Expressjs, GraphQL 등)가 있고 선택한 결정은 비즈니스의 목적과 컨텍스트에 따라 달라지는 웹 서버의 경우입니다.
이 상용구 가이드 범위에서는 세부 기술의 변경으로 핵심 비즈니스를 면역으로 만드는 방법을 살펴보겠습니다. 갑시다!
여기에서 구현 세부 정보를 찾을 수 있습니다repository.
상용구
코드 구조
.
├── package.json
├── package-lock.json
├── README.md
├── src
│ ├── application
│ │ ├── auth
│ │ │ └── index.ts
│ │ ├── graphql
│ │ │ ├── index.ts
│ │ │ ├── schemaShards
│ │ │ │ ├── index.ts
│ │ │ │ └── users.ts
│ │ │ ├── subscriptionManager.ts
│ │ │ └── utils
│ │ │ └── mergeRawSchemas.ts
│ │ └── index.ts
│ ├── dto
│ │ └── user.dto.ts
│ ├── entities
│ │ └── user.entity.ts
│ ├── index.ts
│ ├── IoC
│ │ ├── container.ts
│ │ ├── icradle.interface.ts
│ │ └── providers
│ │ ├── auth.provider.ts
│ │ └── user.provider.ts
│ ├── persistence
│ │ ├── auth.repository.ts
│ │ ├── constants.ts
│ │ ├── password.ts
│ │ └── user.repository.ts
│ ├── services
│ │ ├── auth.repository.interface.ts
│ │ ├── auth.service.ts
│ │ ├── user.repository.interface.ts
│ │ └── user.service.ts
│ └── __typedefs
│ ├── graphqlTypes.d.ts
│ └── schema.graphql
└── tsconfig.json
기본 폴더는
src
이며 구현이 포함되어 있습니다.애플리케이션: 백엔드 웹 애플리케이션 프레임워크를 사용할 수 있는 애플리케이션 계층입니다. 이 상용구에는
GraphQL
가 있습니다.서비스: 애플리케이션 사용 사례를 처리하기 위해 논리를 정의한 비즈니스 서비스 계층입니다. 이 계층에는 데이터베이스에 대한 액세스와 같은 세부 작업을 추상화하는 어댑터도 포함되어 있습니다.
엔터티: 애플리케이션 엔터티를 정의하는 애플리케이션의 핵심 구성 요소입니다.
지속성: 이것은 데이터베이스, 메시지 대기열 등과 통신하기 위한 작업을 지정하는 또 다른 세부 계층입니다.
dto: (Data Transfer Object의 약자)는 계층 간의 통신 계약을 정의합니다. 예를 들어 레이어의 메서드에서 사용되는 입력 매개변수 또는 반환 값의 유형
IoC: (Inversion of Control의 약자)는 SOLID 주체의 문자 D인 종속성 주입의 구현입니다. 새 서비스 클래스, 새 리포지토리 클래스 또는 새 컨트롤러를 만들 때마다 이 컨테이너에 등록해야 합니다. 이 상용구는 Awilix 라이브러리를 사용하여 요소를 달성합니다.
커뮤니케이션 정책
클린 아키텍처를 준수하는 계층과 도메인 간의 통신 정책. 다음 다이어그램의 화살표 방향은 구성 요소 간의 관계를 나타냅니다. 예를 들어, 구성요소 X에서 구성요소 Y로 향하는 화살표 방향은 구성요소 X가 구성요소 Y에 종속됨을 의미합니다.
1/종속성 다이어그램
다이어그램에서 볼 수 있듯이 레이어 간의 종속성 흐름은 다음과 같습니다.
2/도메인 간 종속성
물론 실제 프로젝트에는 도메인이 1개만 있는 것은 아닙니다. 따라서 레이어 간의 통신 규칙을 정의해야 합니다.
시작하기
scripts
파일의 package.json
부분에 정의된 시작 사용 가능한 명령줄이 있습니다.1/의존성 설치
npm i
2/핫 리로드 기능을 사용하여
dev
모드에서 애플리케이션 실행npm run dev
3/애플리케이션 컴파일
npm run build
4/
production
모드에서 애플리케이션을 실행합니다. 전에 애플리케이션을 컴파일해야 합니다.npm run start
5/GraphQL 스키마에 대한 유형을 생성합니다. TypeScript 컴파일러가 스키마를 이해할 수 있도록 GraphQL 스키마를 업데이트할 때마다 이 작업을 수행해야 합니다.
npm run generate-typedefs
참조
Reference
이 문제에 관하여(GraphQL + 클린 아키텍처 상용구), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/tuanlc/graphql-clean-architectire-boilerplate-hog텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)