프로그래밍 언어와 프레임워크
Next.js(넥스트제이에스)
Next.js는 React로 만든 화면에 페이지 주소와 서버 기능 등을 더해 웹 앱을 만드는 프레임워크입니다.
쉬운 설명
AI에게 스터디 신청 사이트를 만들어 달라고 했더니 Next.js 프로젝트가 만들어질 수 있어요. React는 화면을 컴포넌트로 구성하는 데 쓰이고, Next.js는 페이지 주소와 레이아웃, 서버에서 실행할 기능 등을 함께 구성하게 해 줘요. 어떤 파일을 고칠지는 프로젝트의 라우터 방식과 폴더 구조를 먼저 봐야 해요. 여기서는 App Router를 쓰는 예를 들어요.
이런 상황에서 만나요
“스터디 소개 페이지를 /study 주소에 추가해 주세요”라고 요청했다고 해 볼게요. App Router 프로젝트에서는 app/study/page.tsx가 해당 주소의 페이지를 정의할 수 있어요.
파일 경로와 페이지 주소를 연결해 봐요
app/
study/
page.tsxexport default function Page() {
return <h1>AI 스터디 소개</h1>;
}http://localhost:3000/study
- 1study 폴더 안의 page 파일이 /study 페이지를 정의하는 예시예요.
- 2페이지에서 표시할 React 컴포넌트를 작성해요.
- 3개발 서버가 3000번 포트에서 실행 중인 경우의 주소예요.
폴더와 주소의 연결을 확인한 뒤 페이지 파일을 수정해요. 실제 앱에는 공통 레이아웃과 다른 구성 파일도 필요해요. 아래 파일만 만든다고 새로운 Next.js 프로젝트 전체가 준비되는 것은 아니에요.
헷갈리기 쉬운 점
Next.js에서는 모든 코드가 서버에서만 실행되나요?
아니에요. 서버에서 처리할 코드와 브라우저에서 동작할 코드를 함께 사용해요. App Router의 페이지와 레이아웃은 기본적으로 서버 컴포넌트이고, 상태나 클릭 이벤트 등이 필요한 부분에는 클라이언트 컴포넌트를 사용해요. 클라이언트 컴포넌트도 초기 HTML을 서버에서 미리 만들 수 있어요.
브라우저로 전달되는 코드와 데이터에 비밀 키를 넣지 않아요. window나 localStorage처럼 브라우저에만 있는 기능은 실제로 브라우저에서 실행되는 시점에 사용해야 해요. use client를 붙였다는 이유만으로 모든 코드가 서버에서 실행되지 않는다고 생각하면 안 돼요.
왜 알아야 할까요?
AI가 말한 파일을 찾고 어떤 주소에 영향을 주는지 확인할 수 있어요. 오류가 서버 로그에 나는지 브라우저에 나는지도 나누어 질문할 수 있어요.
조금 더 자세히
Next.js에는 App Router와 Pages Router가 있습니다. 두 방식은 파일 구조와 데이터 처리 API 등이 다르므로 다른 방식의 예제를 그대로 섞기 전에 프로젝트를 확인합니다.
서버 컴포넌트와 클라이언트 컴포넌트의 구분은 SSR·CSR과 완전히 같은 구분이 아닙니다. HTML을 언제 만드는지, 어떤 코드가 브라우저로 전달되는지, 이후 상호작용을 어디서 처리하는지를 각각 살펴봐야 합니다. 배포 방식에 따라 사용할 수 있는 서버 기능에도 차이가 있습니다.
직접 사용할 때 확인해 보세요
- App Router와 Pages Router 중 사용하는 방식을 확인한다
- 파일 경로와 페이지 주소를 대조한다
- 서버와 브라우저에서 실행할 부분을 구분한다