>웹 프론트엔드 >JS 튜토리얼 >앱을 Express에서 Fastify로 마이그레이션하는 방법

앱을 Express에서 Fastify로 마이그레이션하는 방법

尊渡假赌尊渡假赌尊渡假赌
尊渡假赌尊渡假赌尊渡假赌원래의
2025-02-10 14:50:13677검색

How to Migrate Your App from Express to Fastify Express는 Node.js를 사용하여 웹 애플리케이션을 개발하는 데 가장 인기있는 프레임 워크였습니다. 그러나 프레임 워크는 최근 몇 년 동안 활발한 개발을 감소시켜 현대 자바 스크립트 기능에 대한 지원이 부족했습니다. 동시에 Node.js 응용 프로그램 개발에 대한 다양한 접근 방식을 채택하는 많은 새로운 프레임 워크가 등장하고 Fastify가 그 중 하나입니다.

이 기사는 Fastify가 Node.js 웹 애플리케이션 개발에 대한 강력한 대안이 된 이유를 탐구 할 것입니다. 우리는 기존 Express 응용 프로그램을 처음부터 처음부터 작성하지 않고 단계별로 Fastify로 이동하는 방법을 배웁니다. 이 기사를 공부 한 후에는 기존 Express 응용 프로그램을 자신있게 마이그레이션하고 Fastify 프레임 워크를 활용할 수 있습니다.

이 기사를 읽을 때 다음 조건을 충족해야합니다.

기본 익스프레스 응용 프로그램 생성, 라우팅 정의 및 미들웨어 구성에 익숙합니다.

터미널에서 실행 명령에 익숙합니다.

    이 기사의 모든 샘플 코드는 GitHub에서 찾을 수 있으며이를 탐색, 다운로드 및 실험 할 수 있습니다.
  • 이 기사의 비디오 버전은 내 웹 사이트에서도 볼 수 있습니다.
  • 키 포인트
  • Fastify는 내장 검증 및 로깅, 기본 비동기 지원 및 자동 JSON 구문 분석을 제공하여 Express에 비해 개발 효율성 및 응용 프로그램 성능을 향상시킵니다.
  • 플러그인은 Express Middleware를 사용하고 Fastify 프레임 워크에서 라우팅을 허용하여 Express에서 Fastify로 점진적인 마이그레이션을 용이하게합니다.
통합 테스트는 마이그레이션 전후에 유효한 상태를 유지하기 위해 프레임 워크 독립적이어야합니다. 따라서 테스트 프로세스를 단순화합니다.

리팩토링에는 Express Code를 Express 라우터 및 미들웨어 대신 Fastify의 라우팅 및 플러그인 시스템 사용과 같은 Fastify 등가물로 대체하는 것이 포함됩니다.

마이그레이션 프로세스를 준비하여 먼저 Fastify를 기존 Express 응용 프로그램에 통합 한 다음 점차적으로 Express 구성 요소를 교체 할 수 있습니다.

마이그레이션 후, 타사 익스프레스 미들웨어를 동등한 Fastify 플러그인으로 교체하여 Fastify의 성능 및 기능을 활용하십시오.

Express에서 Fastify로 마이그레이션의 이점 Express를 사용하는 Building Node.js 애플리케이션에 익숙한 경우 기존 Express 응용 프로그램을 Fastify로 마이그레이션하는 데 어떤 이점이 있는지 궁금 할 것입니다. 마이그레이션을 고려해야 할 몇 가지 중요한 이유는 다음과 같습니다

    검증 및 상자에서 로그 아웃합니다. 이러한 기능은 일반적으로 웹 응용 프로그램을 구축 할 때 필요합니다. Fastify를 사용할 때는 이러한 기능을 제공하므로 이러한 작업에 대한 라이브러리를 선택하고 통합 할 필요가 없습니다. 이 기사의 뒷부분에서 이러한 기능에 대해 자세히 알아볼 것입니다.
  • 비동기 코드에 대한 기본 지원. Fastify는 기본적으로 약속을 처리하고 Async/Await을 지원합니다. 이것은 경로가 우리에게 거부되지 않은 약속을 포착 할 것임을 의미합니다. 이를 통해 비동기 코드를 안전하게 쓸 수 있습니다. 또한 라우팅 핸들러 기능의 반환 값을 응답 본문으로 자동 전송하는 등 간결한 작업을 수행 할 수 있습니다.

    <code>  app.get("/user/:id", async (request) => await getUser(request.params.id));
    </code>
    JSON을 자동으로 구문 분석하고 직렬화합니다. JSON 요청 본문을 구문 분석하기 위해 Fastify를 구성 할 필요는 없으며 응답을 위해 객체를 JSON에 직렬화 할 필요가 없습니다. 우리를 위해이 모든 것을 자동으로 처리합니다 :
  • 개발자 친화적 인 개발자. 명확하고 표현력있는 API와 TypeScript에 대한 탁월한 지원을 통해 Fastify는 개발자 경험을 염두에두고 설계되었습니다.
    <code>  app.get("/user/:id", async (request, reply) => {
        const name = request.body.name;
    
        reply.send({ user: { name } });
      });
    </code>
  • 빠른 속도. 우리는 응용 프로그램에서 프레임 워크가 성능 병목 현상의 소스가되기를 원하지 않습니다. 좋은 소식은 Fastify가 고성능을 달성하기 위해 구축된다는 것입니다. Fastify 벤치 마크는 다른 node.js 웹 프레임 워크와 어떻게 비교되는지 보여줍니다.

  • 적극적으로 개발. Fastify 프레임 워크는 적극적으로 개발 중입니다. 릴리스 개선 및 버그/보안이 정기적으로 수정됩니다.

  • api를 자신있게 마이그레이션하는 방법 우리는 응용 프로그램이 Fastify로 마이그레이션 된 후에도 여전히 예상대로 작동하는지 확인하고 싶습니다. 오류를 발견하거나 예상치 못한 변경 사항을 식별하는 데 도움이되는 한 가지는 API 통합 테스트입니다.
  • 통합 테스트는 응용 프로그램의 구성 요소를 단위 테스트와는 다른 방식으로 테스트합니다. 단위는 개별 구성 요소의 기능을 테스트합니다. 통합 테스트를 통해 여러 구성 요소의 동작을 확인할 수 있습니다.

    Express 응용 프로그램에 대한 API 통합 테스트를 작성하는 경우 응용 프로그램을 Fastify로 마이그레이션 한 후 동일한 테스트를 실행할 수 있기를 원합니다. API에 대한 통합 테스트를 작성할 때 다음 사항을 고려해야합니다.

    그들은 특정 프레임 워크에 구속되어서는 안됩니다. 우리는 테스트 나 사용중인 도서관을 변경하지 않고 마이그레이션 전후에 동일한 테스트를 실행할 수 있기를 원합니다.
  • <.> 간단하게 유지하십시오. 최소한 통합 테스트는 API에 의해 노출 된 엔드 포인트에 요청하고 응답이 반환되었지만 종종 더 이상은 아니 었는지 확인해야합니다. 특정 HTTP 상태 코드 또는 응답 헤더를 확인할 수도 있지만 테스트를 가능한 한 간단하게 만들려고 노력해야합니다.
친숙한 도구를 선택하십시오. API 테스트를 만들고 실행하는 데 도움이되는 다양한 도구가 있지만 익숙한 도구를 사용하는 것이 중요합니다. 효과적인 통합 테스트를 작성하려면 HTTP 요청을 발행하고 API의 응답을 주장 할 수 있어야합니다. 일반적으로, 우리는이를 달성하기 위해 많은 라이브러리 나 도구가 필요하지 않습니다.

우리는이 기사에서 API 통합 테스트를 구현하는 방법에 대해 자세히 설명하지 않지만 프레임 워크 마이그레이션을 수행하기 전에 작성하는 것을 고려해야합니다.

Fastify-Express를 사용하여 Express에서 Fastify로 마이그레이션합니다 기존 익스프레스 응용 프로그램을 완전히 다른 프레임 워크로 마이그레이션한다는 아이디어는 다소 어려워 보일 수 있습니다. 다행히도 Fastify 팀은 마이그레이션 경로를 단순화하는 데 도움이되는 플러그인 (Fastify -Express)을 만들었습니다.

Fastify-Express 플러그인은 Fastify를위한 전체 Express 호환성을 추가합니다. Fastify 서버에 익스프레스 미들웨어와 경로를 추가하는 데 사용할 수있는 사용 () 메소드를 제공합니다. 이를 통해 기존 Express 응용 프로그램의 일부를 Fastify로 점차 마이그레이션 할 수 있습니다.

이것은 Express 라우터의 예입니다

그런 다음 Fastify-Express를 사용하여 기존 Express 라우터를 Fastify 서버 인스턴스에 추가 할 수 있습니다.

잠시 후, 우리는 응용 프로그램을 Fastify로 마이그레이션하기 시작 하면서이 모든 작업의 ​​세부 사항을 탐색 할 것입니다.

Fastify-Express 플러그인을 사용하는 것은 장기 솔루션이 아닙니다. Fastify의 모든 이점을 얻으려면 결국 Express 별 응용 프로그램 코드를 마이그레이션해야합니다. 그러나 Fastify-Express 플러그인은 단계에서 Fastify를 마이그레이션 할 수있는 기회를 제공합니다.
<code>  app.get("/user/:id", async (request) => await getUser(request.params.id));
</code>
우리의 예제 express application 우리는 샘플 익스프레스 응용 프로그램을 구축 한 다음 Fastify 프레임 워크를 사용하여 마이그레이션합니다. 이제 코드를 살펴 보겠습니다.

필수 종속성 먼저, 새로운 프로젝트를 만들어 봅시다 :
<code>  app.get("/user/:id", async (request, reply) => {
    const name = request.body.name;

    reply.send({ user: { name } });
  });
</code>
그런 다음 터미널 에서이 명령을 실행하여 Express 응용 프로그램에 필요한 종속성을 설치합니다.

마지막으로 package.json을 열고 스크립트 섹션 위에 다음 줄을 추가하십시오.

이를 통해 응용 프로그램에 ES 모듈을로드 할 수 있습니다.

라우팅 모듈 우리는 라우팅과 미들웨어를 캡슐화하는 데 도움이되는 Express 라우터 인스턴스를 만들 것입니다. Express의 라우터를 사용하여 응용 프로그램을 개별 모듈로 구성하는 데 도움이 될 수 있습니다. 예를 들어, 사용자 라우팅을위한 라우터와 다른 주소 라우팅을위한 라우터가있을 수 있습니다. 나중에 이것이 Fastify를위한 Express Applications를 단계적으로 폐지하는 데 어떻게 도움이되는지 살펴 보겠습니다.

라우터 인스턴스를 만들고 미들웨어를 추가하겠습니다.

위의 코드에서, 우리는 두 가지 Express Middleware 예제를 구성했습니다 :

express.json (). 이 미들웨어 기능은 Express에 내장되어 있습니다. JSON 요청 본문을 파싱합니다.

cors. 이 미들웨어는 API 응답에 CORS 헤더를 추가하는 데 도움이됩니다. 웹 페이지에서 API를 호출 할 수 있습니다.

이 미들웨어 도구는이 라우터에서 정의하는 경로에서 작성한 모든 요청에 ​​대해 실행됩니다.

이제 미들웨어를 구성 했으므로 라우터에 첫 번째 경로를 추가 할 수 있습니다.
<code>// src/routes.js
const router = express.Router();

router.get("/:user_id", function getUser(request, response, next) {
  response.json({});
});

export default router;
</code>
실제 응용 프로그램에서 위의 라우팅 핸들러 기능은 수신 한 데이터를 확인한 다음 데이터베이스를 호출하여 새 사용자 레코드를 작성합니다. 이 예에서는 응답 본문으로 수신 된 데이터를 보내고 있습니다.

이제 우리는 사용자를 검색하기 위해 경로를 추가합니다 :

<code>  app.get("/user/:id", async (request) => await getUser(request.params.id));
</code>
사후 라우팅과 마찬가지로 위의 라우팅 핸들러는 일반적으로 데이터베이스를 호출하여 사용자 데이터를 검색하지만이 예를 들어 응답 본문을 보낼 객체를 하드 코딩했습니다.

마지막으로, 우리는 라우터 객체를 다른 모듈에서 가져올 수 있도록 라우터 객체를 내보낼 것입니다.

앱 모듈 이제 우리는 앱 모듈을 만들 것입니다 :

이 모듈에서는 새 Express Server 인스턴스를 생성하는 함수를 정의합니다. 그런 다음 라우터 객체를 서버 인스턴스에 추가합니다.

서버 모듈 마지막으로 서버 모듈을 생성합니다. 이 모듈은 앱 모듈에서 정의한 buildApp () 함수를 사용하여 새 Express Server 인스턴스를 만듭니다. 그런 다음 포트 3000에서 듣도록 구성하여 Express 서버를 시작합니다.
<code>  app.get("/user/:id", async (request, reply) => {
    const name = request.body.name;

    reply.send({ user: { name } });
  });
</code>
응용 프로그램을 실행하십시오
이제 우리는 터미널에서 실행할 수있는 완전한 런닝 가능한 Express 응용 프로그램이 있습니다.

다른 터미널에서는 Curl을 사용하여 API가 작동하는지 확인하기 위해 API에 요청할 수 있습니다.

우리는 다음과 같이 응답을 받아야합니다

신청서를 Express에서 Fastify로 마이그레이션합니다 이제 우리는 Fastify 프레임 워크를 사용하여 마이그레이션 할 완전한 기능을 갖춘 Express 응용 프로그램을 가지고 있습니다.

필수 종속성 세 가지 종속성을 설치해야합니다
<code>// src/routes.js
const router = express.Router();

router.get("/:user_id", function getUser(request, response, next) {
  response.json({});
});

export default router;
</code>
Fastify 프레임 워크 Fastify-Express 플러그인 Fastify -Cors 플러그인 -이 응용 프로그램이 이미 사용하는 Express Cors Middleware의 포팅 된 버전입니다.

터미널 에서이 명령을 실행하여 설치하자 :

GitHub의 이러한 코드 변경의 차이점을 볼 수 있습니다.

refactor 앱 모듈

이제 종속성이 설치되었으므로 앱 모듈을 리팩터링해야합니다. 우리는 그것을 변경할 것입니다 :

Express 대신 Fastify 및 Fastify-Express를 가져 오십시오 Express Server 인스턴스 대신 Fastify Server 인스턴스를 만듭니다. Fastify-Express 플러그인을 사용하여 Express 라우터 객체를 서버에 추가하십시오.

이것은 우리가 이러한 변화를 한 후에 우리가 보이는 것입니다 :
<code>// src/server.js

import Fastify from "fastify";
import ExpressPlugin from "fastify-express";

import routes from "./routes.js";

const fastify = Fastify();

await fastify.register(ExpressPlugin);

fastify.use("/user", routes);

await fastify.listen(3000);
</code>

GitHub의 이러한 코드 변경의 차이점을 볼 수 있습니다.

위의 코드에서 Fastify Server 인스턴스를 만들 때 로거 옵션을 전달한다는 것을 알 수 있습니다. 이를 통해 Fastify의 내장 로깅 기능이 가능합니다. 나중에 이것에 대해 더 많이 배울 것입니다.

서버 모듈을 리팩터 이제 Fastify 서버 인스턴스와 함께 작동하려면 서버 모듈을 변경해야합니다.

GitHub의 이러한 코드 변경의 차이점을 볼 수 있습니다.
<code>mkdir express-to-fastify-migration
cd express-to-fastify-migration
npm init -y
</code>
Fastify는 기본적으로 약속을 지원하기 때문에 위의 코드에서 기다렸다가 Fastify의 내장 로깅 기능을 사용하여 오류를 캡처하고 로그인 할 수 있습니다.

다음 단계 우리의 응용 프로그램은 이제 Fastify를 사용하여 요청을 라우팅하고 응답을 보냅니다. 완전한 기능이지만 우리의 라우팅은 여전히 ​​Express를 사용하고 있습니다. Express로 완전히 마이그레이션하려면 경로를 Fastify 사용으로 마이그레이션해야합니다.

refactor 우리의 라우팅 모듈 Express Applications의 라우팅은 Express 라우터에 캡슐화됩니다. 이 라우터를 Fastify 플러그인으로 리팩토링했습니다. 플러그인은 Fastify의 기능으로 라우팅 및 관련 기능을 캡슐화 할 수 있습니다.

우리는 라우팅 모듈 (src/lours.js)을 리팩터링하기 위해 특급 특정 행을 제거하여 시작합니다.

그런 다음 기본 모듈 내보내기를 Fastify 서버 인스턴스를 수락하는 비동기 기능으로 변경해야합니다. 이것은 Fastify 플러그인의 기초입니다. 라우팅 모듈의 나머지 코드는이 플러그인 함수로 이동됩니다 :

미들웨어와 라우팅이 Fastify와 함께 일하기 위해서는 다음을 변경해야합니다.

Fastify로 라우터 참조를 변경하십시오 경로 핸들러 기능을 비동기 기능 로 변경하십시오 경로 핸들러 함수 매개 변수를 (요청, 응답, 다음)에서 (요청, 답장) 로 변경합니다. 응답 참조를 답장으로 변경하십시오 <..> 응답을 변경하십시오 .json () 콜로 답장 .send () 다음 (오류) 인스턴스를 변경하여 오류 를 던집니다

이러한 모든 변경을 한 후, 우리의 라우팅 모듈은 이제 Fastify 라우팅이있는 Fastify 플러그인입니다.

이제 라우팅 모듈에서 내보낸 플러그인을 사용하려면 앱 모듈 (src/app.js)을 변경해야합니다. 즉, fastify.use () 호출을 fastify.register ()로 호출하여 대체하는 것을 의미합니다.
<code>  app.get("/user/:id", async (request) => await getUser(request.params.id));
</code>
GitHub의 이러한 코드 변경의 차이점을 볼 수 있습니다.

예제 Express 응용 프로그램에는 라우터가 하나만 있으므로 응용 프로그램의 모든 경로를 한 번에 Fastify 사용에 마이그레이션 할 수 있습니다. 그러나 여러 라우터가있는 더 큰 익스프레스 응용 프로그램이 있으면 각 라우터를 마이그레이션하여 한 번에 단계별로 빠르게 빠르게 할 수 있습니다.

미들웨어를 플러그인으로 바꾸십시오 우리의 응용 프로그램은 양호한 상태이며 Express에서 Fastify로 거의 완전히 마이그레이션했습니다. 마이그레이션해야 할 사항 중 하나 : Cors Express Middleware 패키지 사용. 이전에 Fastify-Cors 플러그인을 설치했으며 이제 Cors Middleware를 교체하기 위해 응용 프로그램에 추가해야합니다.
<code>  app.get("/user/:id", async (request, reply) => {
    const name = request.body.name;

    reply.send({ user: { name } });
  });
</code>
라우팅 모듈 (src/lours.js)에서 Cors Middleware의 가져 오기를 교체해야합니다.

그런 다음 fastify.se ()로 전화를 fastify.register ()로 변경해야합니다.

는 Fastify와 함께 플러그인을 등록 할 때 플러그인 기능과 옵션 객체를 별도의 매개 변수로 전달해야합니다.
    우리는 더 이상 Fastify-Express 플러그인이 제공하는 사용 () 함수를 사용하지 않으므로 응용 프로그램에서 완전히 제거 할 수 있습니다. 이렇게하려면 앱 모듈 (src/app.js)에서 다음 줄을 삭제 해 드리겠습니다.
    <code>  app.get("/user/:id", async (request) => await getUser(request.params.id));
    </code>
    GitHub의 이러한 코드 변경의 차이점을 볼 수 있습니다.

    Express Dependencies

    삭제 Express에서 Fastify로 응용 프로그램 마이그레이션이 완료되었습니다! 이제 터미널 에서이 명령을 실행하여 Express 관련 종속성을 제거 할 수 있습니다.

    GitHub의 이러한 코드 변경의 차이점을 볼 수 있습니다.

    마이그레이션 된 응용 프로그램 를 실행하십시오 이제 우리는 신청서를 금식하기 위해 완전히 마이그레이션 했으므로 모든 것이 여전히 예상대로 작동하는지 확인하기에 좋은시기입니다. 응용 프로그램이 Express를 사용했을 때 이전에 실행 한 것과 동일한 명령을 실행합시다.

먼저, 우리는 터미널에서 응용 프로그램을 실행합니다.
<code>  app.get("/user/:id", async (request, reply) => {
    const name = request.body.name;

    reply.send({ user: { name } });
  });
</code>
그런 다음 다른 터미널에서 Curl을 사용하여 API에 예상대로 작동하는지 확인하기 위해 API에 요청합니다.

우리는 다음과 같이 응답을 받아야합니다

미들웨어를 제거하십시오 예제 Express 응용 프로그램은 일부 미들웨어 기능 만 사용하지만 실제 Express 응용 프로그램은 더 많은 것을 사용할 수 있습니다. 우리가 볼 수 있듯이 Fastify-Express 플러그인을 사용하면 Express Middleware (필요한 경우)를 계속 사용할 수 있습니다. 이를 통해 플러그인을 금식하기 위해 고유 한 Custom Express Middleware의 재 작성을 지연시킬 수 있습니다. 그러나 제 3 자 Express Middleware를 어떻게 교체합니까?

운 좋게도 Fastify는 건강한 플러그인 생태계를 제공합니다. 다음은 Fastify 플러그인으로 교체 할 수있는 인기있는 Express Middleware 패키지입니다.

cors 🎜 fastify-cors 헬멧 🎜 Fastify-Helmet csurf ➜ Fastify-CSRF Express-Session ➜ Fastify-Server-Session Express-jwt ➜ Fastify-jwt

http-errors ➜ fastify 감인 가능한 serve static ➜ fastify static Multer ➜ Fastify-Multer

<code>// src/routes.js
const router = express.Router();

router.get("/:user_id", function getUser(request, response, next) {
  response.json({});
});

export default router;
</code>
일부 Fastify 플러그인은 Express 제품을위한 직접 포트 또는 포장지입니다. 즉, 일반적으로 Fastify 플러그인으로 전달 된 구성 옵션을 변경할 필요가 없습니다.

Fastify Ecosystem 페이지에서 전체 플러그인 목록을 찾을 수 있습니다.

Fastify를 최대한 활용하십시오 이제 우리는 Express 응용 프로그램을 마이그레이션하여 Fastify에 익숙해지기 시작 했으므로 이제 우리가 혜택을받을 수있는 다른 Fastify 기능을 살펴보기 시작할 때입니다.
<code>// src/server.js

import Fastify from "fastify";
import ExpressPlugin from "fastify-express";

import routes from "./routes.js";

const fastify = Fastify();

await fastify.register(ExpressPlugin);

fastify.use("/user", routes);

await fastify.listen(3000);
</code>

검증 Fastify는 요청 확인 기능을 제공합니다. 백그라운드에서 AJV (다른 JSON 스키마 유효성 검증기)를 사용하므로 JSON 스키마를 사용하여 유효성 검사 규칙을 정의 할 수 있습니다.

이것은 JSON 모드를 사용하여 포스트 경로에서 요청 본문을 확인하는 예입니다.
<code>mkdir express-to-fastify-migration
cd express-to-fastify-migration
npm init -y
</code>
검증 오류는 자동으로 포맷되고 JSON 응답으로 전송됩니다.

Fastify Verification 및 직렬화 문서에서 자세히 알아보십시오.

로그 레코드 로그 로그 로그인 Node.js 응용 프로그램은 생산 환경에서 성능에 부정적인 영향을 줄 수 있습니다. 다른 곳에서 로그 데이터 직렬화 및 전송 (예 : Elasticsearch)에 많은 단계가 필요하기 때문입니다. 이 응용 프로그램에서 높은 최적화는 매우 중요합니다.

로그 로깅은 Fastify에 완전히 통합되어 있으므로 로거를 선택하고 통합하는 데 시간을 소비 할 필요가 없습니다. Fastify는 빠르고 유연한 로거 : Pino를 사용합니다. JSON 형식으로 로그를 생성합니다

Fastify Server 인스턴스를 만들 때 로깅을 활성화하고 Pino로 전달한 옵션을 사용자 정의 할 수 있습니다. 그런 다음 Fastify는 위와 같이 로그 메시지를 자동으로 출력합니다. 로거 인스턴스는 Fastify 서버 인스턴스 (예 : Fastify.log.info ( "...")) 및 모든 요청 객체 (예 : request.log.info ( "..."))에서 사용할 수 있습니다.

Fastify 벌목 문서에서 자세히 알아보십시오.
<code>  app.get("/user/:id", async (request) => await getUser(request.params.id));
</code>
오류 처리 Fastify는 오류 처리 기능을 명시 적으로 지정할 수있는 seterRorHandler () 메소드를 제공합니다. 이는 Express와 다릅니다. 오류 처리 미들웨어는 허용하는 매개 변수 (err, req, res, next)로만 구별 할 수 있으며 특정 순서로 추가해야합니다.

완전한 유연성을 위해 다른 플러그인에 다른 Fastify 오류 핸들러를 지정할 수 있습니다. Fastify 오류 문서에서 자세히 알아보십시오.

데코레이터 Decorators는 Fastify의 강력한 기능으로 Core Fastify 객체 (Fastify Server 인스턴스)와 함께 요청 및 응답 객체를 사용자 정의 할 수 있습니다. 다음은 기본 데코레이터의 예입니다

데코레이터를 사용하면 Fastify 응용 프로그램 전체에서 데이터베이스 연결과 같은 컨텐츠를 사용하거나 엔진을 볼 수 있습니다. Fastify Decorator 문서에서 자세히 알아보십시오.

결론 이 기사에서는 기존 Node.js 응용 프로그램을 Express에서 Fastify로 마이그레이션하는 방법을 배웠습니다. 우리는 이미 Fastify-Express 플러그인이 기존 응용 프로그램을 점차 마이그레이션하는 데 어떻게 도움이되는지 이미 배웠습니다. 이를 통해 응용 프로그램의 일부가 여전히 Express를 사용하는 경우에도 Fastify가 제공하는 기능의 혜택을받을 수 있습니다.

다음은 Express에서 Fastify로 마이그레이션 할 때 유용 할 수있는 몇 가지 리소스입니다.

    이 기사의 샘플 코드. 코드를 탐색 하고이 기사에서 구축 한 응용 프로그램을 실행하십시오.
  • Fastify 문서화. Fastify 프레임 워크에 대한 포괄적 인 문서.
  • Fastify 생태계. Fastify 플러그인 디렉토리. Express Middleware를 교체하기위한 플러그인을 쉽게 찾을 수 있습니다.
  • Fastify 샘플 응용 프로그램. Fastify의 주요 관리자 중 하나가 만든 샘플 응용 프로그램. 핵심 Fastify 개념, 모범 사례 및 제안을 보여줍니다.
  • Community Discord 서버를 Fastify. Fastify를 사용하여 응용 프로그램 개발에 대한 도움과 조언을 얻을 수있는 좋은 장소입니다.
  • Express에서 Fastify로 마이그레이션하기위한 FAQ
    Express와 Fastify의 주요 차이점은 무엇입니까?
  • Express and Fastify는 모두 node.js 웹 프레임 워크이지만 몇 가지 주요 차이점이 있습니다. Express는 웹 응용 프로그램 및 API를 구축하는 간단한 인터페이스를 제공하는 미니멀리스트 웹 응용 프로그램 프레임 워크입니다. 그것은 거대한 커뮤니티와 풍부한 미들웨어와 함께 오랫동안 주변에있었습니다. 반면에 Fastify는 최소한의 오버 헤드와 강력한 플러그인 아키텍처로 최상의 개발자 경험을 제공하는 데 중점을 둔 새로운 프레임 워크입니다. 매우 빠르게 설계되었으므로 이름과 벤치 마크는 Express보다 초당 더 많은 요청을 처리 할 수 ​​있음을 보여줍니다.
  • Fastify를 위해 Express 응용 프로그램을 마이그레이션하는 방법은 무엇입니까?
  • Express에서 Fastify로 마이그레이션에는 여러 단계가 포함됩니다. 먼저, Fastify를 설치하고 응용 프로그램의 Express 인스턴스를 Fastify 인스턴스로 바꿔야합니다. 그런 다음 Express 특유의 미들웨어를 Fastify 플러그인 또는 사용자 정의 코드로 교체해야합니다. 또한 Fastify의 라우팅 시스템을 사용하려면 경로를 업데이트해야합니다. 마지막으로 Fastify의 오류 처리 메커니즘을 사용하려면 오류 처리 코드를 업데이트해야합니다.
  • Fastify에서 Express Middleware를 사용할 수 있습니까?
Fastify에는 자체 미들웨어 시스템이 있지만 "Middie"플러그인을 통해 Express 스타일 미들웨어를 지원합니다. 그러나 Fastify에서 Express Middleware를 사용하면 성능에 영향을 줄 수 있으므로 가능한 경우 Fastify 플러그인 또는 사용자 정의 코드를 사용하는 것이 좋습니다.

Fastify에서 오류를 처리하는 방법은 무엇입니까?

Fastify에는 응용 프로그램에서 오류를 처리하는 데 사용할 수있는 내장 오류 처리 메커니즘이 있습니다. 특정 경로 또는 전체 응용 프로그램에 대해 사용자 정의 오류 처리기를 정의 할 수 있습니다. Fastify는 또한 Async/Await 구문을 지원하여 Express보다 오류 처리가 더 직접적으로 만듭니다.

Fastify에서 후크를 사용하는 방법은 무엇입니까?

Hook는 Fastify의 강력한 기능으로 요청/응답 라이프 사이클의 여러 단계에서 사용자 정의 코드를 실행할 수 있습니다. 후크를 사용하여 요청 또는 응답을 수정하고 인증을 수행하고, 레코드 요청 등을 수행 할 수 있습니다. Fastify는 "Onrequest", "Prehandler", "Onsend"및 "OnResponse"를 포함한 여러 후크를 지원합니다.

Fastify에서 플러그인을 사용하는 방법은 무엇입니까?

플러그인은 응용 프로그램의 기능을 확장 할 수있는 Fastify의 주요 기능입니다. 플러그인을 사용하여 새로운 기능을 추가하거나 다른 서비스와 통합하거나 애플리케이션 논리를 캡슐화 할 수 있습니다. Fastify에는 풍부한 플러그인 생태계가 있으며 자신의 플러그인도 만들 수 있습니다.

Fastify에서 경로를 정의하는 방법은 무엇입니까?

Fastify는 매개 변수, 쿼리 문자열, 와일드 카드 등을 지원하는 강력한 라우팅 시스템을 가지고 있습니다. 경로의 메소드, URL, 핸들러 및 기타 옵션을 지정하는 옵션 개체를 허용하는 "Route"메소드를 사용하여 경로를 정의 할 수 있습니다.

Fastify에서 응답을 보내는 방법은 무엇입니까?

Fastify에서는 라우팅 핸들러에게 전달 된 "답장"객체를 사용하여 응답을 보낼 수 있습니다. "Send", "Code", "Header"및 "Type"을 포함하여 "Reply"객체에 응답을 보내는 방법에는 여러 가지가 있습니다. Fastify는 또한 성능에 대한 JSON 응답을 자동으로 직렬화합니다.

Fastify에서 확인을 수행하는 방법은 무엇입니까?

Fastify는 JSON 스키마를 사용하여 요청 및 응답 확인을 지원합니다. 경로의 패턴을 정의 할 수 있으며 Fastify는 이러한 패턴에 따라 들어오는 요청 및 나가는 응답을 자동으로 확인합니다. 이를 통해 오류를 조기에 감지하고 응용 프로그램 신뢰성을 향상시킵니다.

Fastify는 어떻게 성능을 향상합니까?

Fastify는 빠르고 효율적으로 설계되었습니다. 가벼운 아키텍처를 사용하고 HTTP/2 및 HTTP/3을 지원하며 오버 헤드를 최소화하는 강력한 플러그인 시스템이 있습니다. Fastify는 또한 JSON 응답을 자동으로 직렬화하고 요청 및 응답 확인을 지원하여 성능을 향상시킵니다.

위 내용은 앱을 Express에서 Fastify로 마이그레이션하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.