분류 Nodejs

2021 년에 ExpressJS를 중단해야 하는 이유

컨텐츠 정보

  • 조회 9 (작성일 )

본문

Express는 현재 그리고 수년 동안 Node.js 생태계의 사실상의 라이브러리입니다. Node를 배우기 위한 튜토리얼을 찾고 있다면 Express가 사람들에게 제시되고 가르칩니다.


최신 State of JS 설문 조사에서 Express는 모든 카테고리에서 1 위를 차지했습니다.


State of JS 2020 Results 

그럼에도 불구하고 Express는 훌륭한 기술이 아니므로 2015 년부터 사용을 중단해야 합니다.


유지되지 않음 


Express는 수년간 업데이트 되지 않았으며 다음 버전은 6 년 동안 알파 버전입니다.


사람들은 API가 안정적이고 변경할 필요가 없기 때문에 업데이트 되지 않는다고 생각할 수 있습니다. 현실은 : Express는 async / await를 처리하는 방법을 모릅니다.


경로의 핸들러 또는 미들웨어 내에서 async / await 코드를 사용하는 경우 UnhandledPromiseRejectionWarning 예외가 발생하기 쉽습니다. Express는 이러한 예외를 모르기 때문에 처리하지 않습니다.


Express의 저장소에는 이 문제가 있는 사람들에 대한 여러 문제 (# 4360, # 4348, ...)가 있습니다.


Node 15에서 이 예외가 발생하면 애플리케이션이 충돌하며 이 버전 이전에는 메모리 누수가 발생한다는 것을 알아야 합니다.


async / await를 사용할 때는 항상 라이브러리가 AsyncFunction을 콜백으로 허용하는지 확인해야 합니다. 여기에 Broken Promises라는 멋진 강연이 있습니다.


낮은 범위의 프레임 워크입니다. 


"프레임 워크"라는 단어는 거친 용어입니다. 자세히 살펴보면 Express는 미들웨어를 지원하는 라우팅 라이브러리이지만 여전히 "프레임 워크"라고합니다.


Evan You는 프레임 워크 디자인에서 균형을 찾는 것에 대해 좋은 이야기를 했습니다. 그는 우리가 프레임 워크를 범위별로 분류해야 한다고 말했습니다.


Express를 낮은 범위의 프레임 워크로 분류 할 수 있습니다. 


애플리케이션을 구축 할 때 라우팅 시스템보다 더 많은 기능이 필요합니다.


다음을 수행해야 합니다.

  • 데이터베이스에 액세스합니다.
  • 귀하의 데이터를 검증합니다.
  • 인증 계층을 생성합니다.
  • 권한 부여 시스템을 만듭니다.
  • ...

이러한 모든 기능은 Express에 포함되어 있지 않으며 직접 접착해야 합니다.


이러한 모듈을 직접 붙이는 것은 메모리 누수, 보안 허점 및 버그를 애플리케이션에 추가하는 모든 위험을 감수하는 것을 의미합니다. 무엇보다 시간과 돈을 잃을 뿐입니다. 그 책임을 맡아서는 안되기 때문입니다.


대안 


대안은 무엇입니까? 사람들에게 무엇을 가르쳐야 합니까?


저 범위 프레임 워크를 사용해서는 안된다고 생각하더라도 이 스타일을 좋아하거나 학습 목적으로 필요한 사람은 거의 없습니다. 이 카테고리에서는 fastify를 봐야 합니다.


이 프레임 워크는 잘 유지 관리되며 응용 프로그램을 마이그레이션 하는 데 도움이 되는 Express에 대한 공식 호환성 계층을 제공합니다.


비즈니스 로직에 집중할 수 있는 모든 기능을 갖춘 높은 범위의 프레임 워크를 선호하는 경우 AdonisJS를 사용할 수 있습니다.


Express에 머무를 이유가 없으며, 오늘 피할 수 있는 미래의 고통 만 있습니다.


내가 Express를 싫어합니까? 


이 섹션의 목표는 이 기사에 고지 사항을 추가하는 것입니다. 나는 Express를 싫어하지 않는다. 나는 다른 사람들이 정보에 입각 한 결정을 내리고 무리를 따르지 않도록 돕는 나의 관점을 공유하고 있습니다.


Express는 Node.js 생태계의 첫 번째 프레임 워크 중 하나였으며 수년 동안 훌륭했습니다! 하지만 이제는 그것을 놓아 버릴 때입니다.


저는 Node.js 생태계를 더욱 발전시키고 신규 이민자들이 폭발하지 않는 기술을 배우도록 돕고 싶습니다.


https://dev.to/romainlanz/why-you-should-drop-expressjs-in-2021-711