프랙탈 — Nodejs 앱 구조

문제를 제거하기 위해 도구를 사용해보십시오

프랙탈 — Nodejs 앱 구조

Fractal — Nodejs 앱 구조: GraphQL로 확장할 수 있는 REST API의 백엔드 구조화에 대한 이 기사

참고: 이 기사에서는 구조화 및 여기 자세한 이해를 위한 코드 베이스입니다.
많은 백엔드 프로젝트를 작업한 후, 저는 기술 스택과 프랙탈 앱 구조의 선택이 항상 제가 선택하는 것처럼 앱 구조화도 똑같이 중요하다는 것을 깨달았습니다.

프랙탈 패턴은 유사한 패턴이 점진적으로 반복되고 동일한 사고 과정이 코드베이스의 구조화에 적용된다는 것을 의미합니다. 모든 단위가 반복됩니다.



참고: 프랙탈 패턴을 코딩하고 시각적으로 보려면 여기 그리고 나를 팔로우하는 것을 잊지 마세요. 깃허브 .
이제 핵심부터 시작하겠습니다.

앱 루트 구조

루트 폴더는 API 구조의 어떤 경우에도 항상 동일하게 유지됩니다.

따라서 루트 수준에는 다음이 있습니다.

1**. app**은 주요 앱 코드가 있는 곳이며 아래 앱 구조에서 자세히 설명합니다.

2**. docs**(선택 사항)는 문서화용입니다.

삼**. lib**(선택 사항)은 프로덕션 환경에 사용되는 컴파일된 앱 코드가 있는 곳입니다.

4**. 마이그레이션**은 모든 테이블 스키마가 있는 곳입니다. 나는 개인적으로 사용 knex.js 그리고 자체 제작한 ORM 이름 테이블 그 위에 쓰여 있습니다.

현금 앱 이 송금에 실패했습니다.

일부 마이그레이션 파일(CLI에서 자동으로 생성됨)

5**. node_modules** 당신은 이미 그것을 알고 있습니다.

6**. 테스트 **는 모든 단위 테스트를 작성하는 곳입니다.

테스트 폴더의 구조는 앱 폴더 아래의 작업이나 경로와 같으며 앱 구조 섹션에서 설명합니다.

7**. config 및 config.sample.js **데이터베이스, 인증, 외부 API 키 등과 관련된 모든 구성이 저장되는 곳입니다.

왜 그런 파일이 두 개 있는지 궁금하다면 **config.sample.js ** 다른 개발자가 파일 모양을 알고 로컬을 구성하는 데 사용할 수 있도록 저장소로 이동합니다. config.js 파일.

또한 프로덕션 환경을 위한 config.production도 가질 수 있습니다.

참고: config는 데이터베이스, 외부 Api 키 등을 위한 별도의 하위 구성 파일을 가질 수 있는 별도의 폴더일 수도 있지만 저에게는 너무 과하게 느껴집니다.

네이티브 숫자 입력에 반응
  1. eslintrc 린트 논리가 가는 곳입니다. 더 읽기 여기 .

  2. **migrate **는 config.js에서 ORM으로 구성을 전달하고 CLI에서 마이그레이션을 실행하는 데 도움이 되는 파일입니다. 코드를 확인하십시오. 여기 .

  3. **gitignore **는 저장소에 푸시하고 싶지 않은 폴더 또는 파일 이름의 경로입니다.

    Malwarebytes 시작을 막는 방법

**11. package.json **— 이미 알고 있습니다.

참고: 다른 것들은 간단하기 때문에 우리는 앱 폴더 구조에 대해서만 논의할 것입니다. 도움이 필요하거나 코드 베이스에 대한 이해를 원하시면 저에게 연락주세요.##

앱 구조

앱 폴더

1.** server.js**는 서버를 시작하는 파일이며 |_+_|와 같은 요청 구문 분석에 필요한 모든 미들웨어를 갖습니다. 등등 그리고 마지막으로 route 미들웨어를 추가합니다.

server.js용 샘플 코드

2.** 경로**에는 프로젝트의 엔터티에 따라 만들어진 하위 파일 또는 하위 폴더가 있습니다.

경로 폴더

route 아래의 index.js는 아래와 같이 보입니다. 요청 처리기 미들웨어와 catch all 경로가 있습니다.

경로 아래의 index.js

참고: 폴더에서 팀과 같은 큰 엔터티를 추상화하고 경로 아래에 구성원, 연락처, 대시보드 등과 같은 하위 하위 폴더를 가질 수 있는 팀으로 호출할 수 있습니다.

경로의 프랙탈 패턴 구조화

재료 UI 쇼케이스

경로 아래의 파일은 모든 요청 처리기 또는 하위 경로가 기록되는 위치이며 유일한 목적은 해당 경로 또는 하위 경로 폴더를 담당하는 작업을 호출하는 것입니다.

경로 아래의 auth.js

참고: **위 이미지에서 **가입, 로그인, 로그아웃, 새로 고침 및 비밀번호 잊어버리기 **는 모두 작업 폴더 아래에 정의된 작업입니다.

  1. 대부분의 경우 **actions 폴더 **는 route 폴더와 동일한 구조를 갖습니다.

작업 폴더

**actions의 각 파일 를 위한 **비즈니스 로직 즉, 데이터베이스 테이블에서 실제 엔터티를 저장, 가져오기, 변경하거나 enqueue 및 dequeue 등과 같은 대기열 기능을 수행하는 모든 코드가 여기에서 발생합니다.

가입 작업을 위한 인증 파일의 샘플 코드

참고: 작업은 다른 작업도 호출할 수 있습니다.
4.** 미들웨어, 유틸리티, 도우미, 작업 같은 방식을 따를 것이다 **동작 또는 경로로 구조화하면 기본 엔터티가 루트 폴더 역할을 한 다음 하위 엔터티별로 하위 폴더를 가질 수 있으며 반복됩니다.

5.** tasks.js**는 데이터베이스 시드, 데이터베이스 정리 등과 같은 작업 폴더 아래에 생성된 CLI에서 작업을 실행하는 데 사용됩니다.

언리얼 엔진 사이드 스크롤러

6.** nsqd**(선택 사항)는 분산 메시징에 특정한 사용 사례입니다.

메모: NSQ 내가 분산 메시징에 사용한 최고 중 하나이며 프로덕션에 아무런 어려움 없이 훌륭하게 작동합니다.
유틸리티 그리고 도우미 필요한 경우 병합할 수 있습니다. 모든 프로젝트에서 더 일반적인 것으로 utils를 재사용할 수 있도록 분리된 상태로 유지하는 것을 좋아합니다.

왜 프랙탈

  1. 우리에게 놀라운 규모를 제공합니다.
  2. 모든 것이 도메인 논리 흐름과 함께 진행되므로 디버그하기 쉽습니다.
  3. 이 코드베이스에 새로운 개발자를 쉽게 온보딩할 수 있습니다.

GraphQL의 경우 route 폴더를 제거할 수 있습니다. 몇 달 전에 *GraphQL *check와 함께 이 구조를 사용해 보았습니다. 여기 (원시 샘플)

Node.js를 처음 접하고 REST API용 백엔드를 만들고 싶다면 다음을 사용하세요. 이것 . 여기에는 설정에서 인증까지 필요한 모든 것이 이미 포함되어 있습니다. 쉘 스크립트를 실행하기만 하면 됩니다.

참고: 저는 개인적으로 라는 자체 생성 ORM을 사용합니다. 테이블 우리가 수년 동안 생산에 사용해 왔으며 당신이 그것을 좋아할 것이라고 약속합니다. 이 ORM과 이 앱 구조는 REST API/GraphQL을 사용하여 모든 종류의 백엔드를 만드는 데 필요한 모든 것입니다.

프랙탈 패턴에 대한 작업이 진행 중입니다(그리고 항상 그럴 것입니다). 최근에 전체 경로 폴더를 제거하고 작업을 **UI **에 직접 노출하여 UI가 필요한 매개변수를 사용하여 함수를 직접 호출할 수 있도록 하는 작업을 하고 있었습니다. *GraphQL이 *하는 일이지만 REST API .

프랙탈을 사용하면 다음을 수행할 수 있습니다.

  • 파일 위치에 대한 이유
  • 복잡한 도메인 엔터티를 쉽게 관리 및 생성
  • 신속하게 반복하고 반복적으로 확장

특별히 감사함 카필 베르마 프랙탈 패턴의 창시자입니다.

#노드-js

또한보십시오: