[typescript] async/await를 사용한 서버 사이드 렌더링 처리 방법

서버 사이드 렌더링은 웹 애플리케이션의 성능을 최적화하는 데 중요한 역할을 합니다. TypeScript를 사용하여 SSR을 구현할 때 async/await를 효과적으로 활용하는 방법에 대해 알아보겠습니다.

1. async/await 이해

async/await는 Promise를 사용하는 비동기 코드를 간결하게 작성할 수 있게 해주는 기능입니다. async 함수 내에서 await 키워드를 사용하여 비동기 작업이 완료될 때까지 기다린 후 결과를 반환받을 수 있습니다.

예시:

async function fetchData() {
  const response = await fetch('https://example.com/api/data');
  const data = await response.json();
  return data;
}

2. 서버 사이드 렌더링 구현

TypeScript로 서버 사이드 렌더링을 처리할 때 async/await를 활용하여 비동기 작업을 보다 효율적으로 다룰 수 있습니다. 예를 들어, Express 프레임워크와 함께 SSR을 구현하는 경우 다음과 같은 방법으로 async/await를 활용할 수 있습니다.

import express from 'express';
import { renderToString } from 'react-dom/server';
import App from './App';

const app = express();

app.get('/', async (req, res) => {
  try {
    const data = await fetchData(); // 비동기 데이터 가져오기
    const html = renderToString(<App data={data} />); // React 컴포넌트 렌더링
    res.send(html); // 렌더링된 HTML 반환
  } catch (error) {
    res.status(500).send('An error occurred');
  }
});

app.listen(3000, () => {
  console.log('Server is running on port 3000');
});

위 예시에서, get 핸들러 내에서 async/await를 사용하여 데이터를 가져오고, 렌더링된 HTML을 클라이언트에 반환하는 과정을 보여줍니다.

async/await를 활용하면 비동기 코드를 보다 가독성 있게 작성할 수 있고, 에러 처리도 간편하게 할 수 있습니다. SSR의 성능 향상과 안정성을 위해 TypeScriptasync/await를 적절히 활용해보세요.

참고자료

  1. [async/await - JavaScript MDN](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/async_function)
  2. TypeScript 공식 문서