next는 개발자 경험이 매우 좋음
좋다라는건 따로 하나하나 셋팅하지 않아도 지원하는 기능의 규칙만
따른다면 적은 코드로 많은 것을 지원해주기 때문
여기서 리액트가 라이브러리인 이유를 찾을 수 있다.
리액트는 개발자가 원하는 아키텍쳐로 개발자가 주체가되어 사용함
넥스트는 즉, 프레임워크는 개발자가 아닌 프레임워크가 주체가되어 결정함
규칙만 따르면 = 넥스트의 아키텍쳐를 따르면 알아서 코드를 실행시켜줌
pages 라우터를 사용하거나, 둘다 같이 사용해도 문제는 없음
데이터 패치도 같이 사용해서 점진적으로 마이그레이션 하여 혼합해서 사용해도됨
단, pnpm 사용해보기
npm i -g pnpm
mkdir project
cd project
pnpm init
"license": "MIT"
MIT 라이센스는 수정/배포가 자유롭고 실무적,상업적으로 사용할 수 있지만 불이익의 경우 저작궈자에게 아무런 책임을 묻지않는 라이센스이다. (ISC도 MIT라이센스와 같이 오픈소스 소프트웨어 배포를 위한 라이센스이지만 명시적 보증이 없음)
pnpm i next@latest react@latest react-dom@latest
"scripts": {
"dev": "next dev"
}
pnpm run dev 를 실행하면 next, dev를 실행하여 자동으로 app폴더를 참조하고 page.tsx를 찾아 코드를 실행해줌 또 export default인 리액트 컴포넌트여야함 그렇지만 react를 import 한적없고 next에서 알아서 실행시켜주는 것!
위 모든건 라이브러리가 아닌 프레임워크이기 때문에 개발자가 따로 참조하거나 설정하지 않고
그저 프레임워크의 규칙만 따르면 해당 코드를 찾아 실행시켜주는 것임
app
폴더 생성 후 안에 page.tsx
생성 후 아래 컴포넌트를 생성후 export
를 해준다.// /page.tsx
const Home = () => {
return (
<>
<h1>helloworld </h1>
</>
);
};
export default Home;
pnpm run dev
를 실행하면 next에서 서버를 생성해준다
그런데 typescript를 설치하지 않았지만 page.tsx
로 확장가 있기 때문에
실행하는 과정에서 자동으로 typescript를 설치해줌
그리고 root layout layout.tsx
를 자동으로 생성해줌
root layout 왜 자동 생성되는지의 원리와 중요성에 대해서는 다음 포스팅에서 !!