공식문서 샘플 양식 참조
npx create-next-app project-name
SWC는 Rust라는 언어로 제작된 컴파일러이다.
SWC로 Next.js 프로젝트를 빌드하면 바벨을 사용했을 때보다 컴파일 속도가 17배 빠르다고 한다.
공식문서에서도 NextJS가 SWC를 기반으로 구축되었다고 한다.
→ 적용 방법
: next.config.js 설정
const nextConfig = {
reactStrictMode: true,
compiler: {
styledComponents: true, // Next에게 styled-component도 처리해달라고 옵션을 설정해줌
},
};
NextJS에서 styled-component 사용하려면 이런 코드를 설정해야 한다.
왜냐면⁉️
서버 측에서 styled-component를 렌더링하려면 _document.js를 재정의해야 하기 때문이다.
Next에서 ssr할 때 styled-compenet에 있는 style은 바로 처리하지 못한다.
때문에 ssr에서 스타일을 적용되기 위해 이런 코드를 작성해준다.
export default class MyDocument extends Document {
static async getInitialProps(ctx: DocumentContext) {
const sheet = new ServerStyleSheet();
const originalRenderPage = ctx.renderPage;
try {
ctx.renderPage = () =>
originalRenderPage({
enhanceApp: (App) => (props) =>
sheet.collectStyles(<App {...props} />),
});
const initialProps = await Document.getInitialProps(ctx);
return {
...initialProps,
styles: (
<>
{initialProps.styles}
{sheet.getStyleElement()}
</>
),
};
} finally {
sheet.seal();
}
}
render() {
return (
<Html>
<Head />
<body>
<Main />
<NextScript />
</body>
</Html>
);
}
}
import Head from 'next/head'
export function Home() {
return (
<div>
<Head>
<title>My page title</title>
</Head>
</div>
)
}
⭐️ favicon, meta태그는 _app.tsx와 _documnet.tsx 중에 어디에 적용해야 하는지 의문이였다.
→ 깃헙에서 스타 많이받은 코드들을 찾아보니 모두 _document.tsx 파일에 적용했다.
: 왜냐면 NextJS는 검색엔진 최적화
가 된다는 장점이 있는데,
검색엔진이 최적화되려면 meta정보들을 ssr쪽에서 처리하는게 좋기 때문이다.
tailwind-styled-components 공식사이트
style-components에서 tailwind를 편리하게 사용하기 위해 나는 Twin Macro를 설치하여 사용했다.
Macro를 사용하면
그런데 tailwind-styled-components
이라는 것도 macro와 비슷한 기능을 제공한다는 것을 알게되었다.
그래서 이번엔 tailwind-styled-components을 설치하여 사용해보기로 했다.