[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의 성능 향상과 안정성을 위해 TypeScript와 async/await를 적절히 활용해보세요.
참고자료
-
[async/await - JavaScript MDN](https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/async_function) - TypeScript 공식 문서