고유한 API 스택(및 워크플로우)을 사용해야 합니다.

여러 해 동안 나는 여러 개의 노드를 시도했다.js 백엔드 기술 창고, 나는 마침내 내가 당신의 프로젝트를 신속하게 개발하는 데 도움을 줄 적당한 것을 찾았다고 말할 수 있습니다(그리고 당신의 초창기 회사를 시작합니다!).

REST 프레임워크
왜?나는 이미 REST와 GraphQL 백엔드를 광범위하게 사용했는데, 나는 GraphQL이 대부분의 상황에서 과도한 사용이라고 생각한다.신축성이 뛰어나지만 프로젝트를 위해 API를 개발하는 가장 빠른 방법은 아니다.
내가 선택한 REST 프레임워크는 koa입니다.js.
왜?나는 API를 신속하게 개발하는 데 있어서 가장 좋은 틀 중의 하나라고 믿는다. 왜냐하면 그것은 생각에서 실현까지 매우 쉽게 하기 때문이다.
중간부품 창고도 매우 직관적이고 async/await에 의존한다.
나도 그것이 Express보다 훨씬 좋고 보통 더 가볍다고 생각한다.

타자 원고
왜?장기적으로 보면 이것은 매우 좋고 간단한 방법으로 당신의 API 유형을 안전하게 하고 더욱 빨리 개발할 수 있습니다.그것은 나로 하여금 많은 번거로움을 덜어 주었고, 지능적인 감지 조언이 없으면 나는 살아갈 수 없었다.
또한, TypeScript를 사용하면 프로젝트TypeORM를 프로젝트에 쉽게 통합할 수 있습니다.

에스린트
왜?일치성이 중요하다.ESLint는 당신과 당신의 동료들이 형식이 정확하지 않다고 생각하는 코드 때문에 소리를 지르지 않도록 하세요.사용하지 않은 변수/가져오기 및 let 대신 const 의 사용법을 추적할 수 있습니다.

데이터베이스
이것은 당신의 용례에 달려 있습니다.그러나, 당신은 두 가지 데이터베이스 유형인 관계 데이터베이스와 문서 기반 데이터베이스에만 관심을 가져야 합니다.
만약 당신이 확실하지 않다면,
작은 프로젝트에 대해 문서 기반 데이터베이스, 예를 들어MongoDB를 사용하고 싶다고 말하고 싶습니다.
그러나 프로젝트가 증가할 때 실체 간에 어떤 관계가 있을 수 있습니다.따라서 MySQL이나 PostgreSQL 같은 관계 데이터베이스를 사용해야 합니다. (이것은 제가 선택한 데이터베이스입니다.)

타이핑
족제비에게 족제비가 더 어울릴 것 같아.
왜?TypeORM은 typescript(과babel)의 대상 관계 매핑 라이브러리입니다. 이것은 기본적으로 원시 SQL을 처리할 필요가 없고 자동 연결 관계와 같은 일부 유틸리티를 사용할 수 있음을 의미합니다.
TypeORM이 이렇게 재미있는 이유는 장식기를 사용하여 실체 동기화를 하기 때문이다.이것은 개발 환경에서 이전을 사용할 필요가 없다는 것을 의미합니다.
대신 클래스를 정의하고 장식합니다.
@Entity()
class User {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  // automatic type detection thanks to reflection!
  @Column()
  name: string;

  // automatic date columns!
  @CreateDateColumn()
  createdAt: Date;
}
그런 다음 TypeORM은 이 클래스를 사용하여 데이터베이스를 마이그레이션하고 필드에 따라 IntelliSense 제안을 합니다.
왜 안 해요?솔직히 말하면 TypeORM은 초보자에게 우호적이지 않은데 주로 문서가 엉망이기 때문이다.그러나 비결을 터득하고 IntelliSense를 이용하여 당신에게 우위를 가져다 줄 때 그것은 매우 강력한 도구가 된다.

Git 흐름
왜?이것은 특정한 이념/작업 절차/전략으로 팀에서git를 사용할 때 특히 효과적이다(팀에 없으면 특별히 사용할 필요가 없다).
그것은 기능, 버전, 수정 프로그램 등 어떤 것들을 사용해야 하는지를 정의했다.

에반 선생
왜?현재 .env 파일을 사용하여 환경 변수를 정의하는 것은 거의 표준이다.이것은 로컬 컴퓨터와 트랜잭션 프로젝트의 컴퓨터에 서로 다른 변수를 정의할 수 있도록 합니다..env.gitignore에 추가하는 것을 잊지 마세요!

파일 구조
특정 기술 스택과 함께 사용할 수 있는 파일 구조를 제안했습니다.
src
├── entities
│   └── User.ts
├── modules
│   └── module-name
│       ├── module-name.router.ts
│       ├── module-name.service.ts
│       └── module-name.spec.ts
├── mw
├── utils
└── app.ts

e2e
└── test-name.e2e.ts
위쪽부터:
  • entities 폴더에 TypeORM 실체
  • 를 저장해야 합니다.
  • 폴더는 응용 프로그램의 다른 모듈을 저장합니다(NestJS에서 영감을 얻었습니다).예를 들어 modules 모듈에는 공유기가 있을 수 있다. 이 공유기는 auth 루트가 있고 이 루트는 서비스 파일의 /auth/facebook 함수를 반대로 호출할 수 있다.중요한 것은 공유기가 HTTP 내용을 처리하고 서비스는 순수한 데이터를 처리한다는 것이다.이렇게 하면 귀하의 단원 테스트(authorizeWithFacebook())에서 이 서비스를 직접 호출할 수 있습니다.또한 대부분의 경우, 경로는 모듈 이름을 접두사로 해야 합니다.
  • .spec.ts 폴더는 사용자 정의 중간부품을 저장하는 곳입니다.mw 폴더를 사용하여 이 작업을 수행할 수도 있습니다.
  • 폴더는 거의 다른 곳에서 사용할 수 없는 기능입니다.
  • utils 폴더 스토리지를 철저하게 테스트합니다.
  • 이 작업 절차는 나의 프로젝트에 있어서 가장 성공적이며 신속한 개발에 매우 유용하다.
    너는 나를 동의하지 않니?댓글로 토론 시작!
    즐거운 코딩!🎉

    좋은 웹페이지 즐겨찾기