이미지같은 정적 asset 및 robots.txt를 public폴더에 둔다. root 디렉토리가 된다.
next/image를 쓰면 아래와 같은 것들을 챙겨갈 수 있다.
next/head에서 Head를 불러와서 title같은 태그 등 metadata를 정의해 줄 수 있다.
import Link from 'next/link';
import Head from 'next/head';
export default function FirstPost() {
return (
<>
<Head>
<title>First Post</title>
</Head>
<h1>First Post</h1>
<h2>
<Link href='/'>
<a>Back to home</a>
</Link>
</h2>
</>
);
}
lang속성을 변경시킨다던지 html태그를 커스터마이징하고 싶다면 pages/_document.js 파일을 만들어서 정의해줄 수 있다. 자세한건 공식문서 Custom Document를 참고한다.
https://nextjs.org/docs/basic-features/script
third-party js를 불러올 때 Head
컴포넌트 내에 정의해줄 수 있기는 하지만 이럴 경우 불러오는 순서를 명확히 정의할 수 없다. 그래서 next/script에 있는 Script
컴포넌트를 사용한다. strategy같은 속성은 공식문서를 참고하자.
import Link from 'next/link';
import Head from 'next/head';
import Script from 'next/script';
export default function FirstPost() {
return (
<>
<Head>
<title>...</title>
</Head>
<Script
src='https://connect.facebook.net/en_US/sdk.js'
strategy='lazyOnload'
onLoad={() => console.log('script loaded')}
/>
<h1>First Post</h1>
<h2>
<Link href='/'>
<a>Back to home</a>
</Link>
</h2>
</>
);
}
Next.js는 css, sass가 내장되어 있어서 import해서 사용할 수 있다. 내장되어 있는 styled-jsx와 내장되어 있지는 않지만 유명한 css-in-js 라이브러리인 styled-component와 emotion도 사용할 수 있다. tailwind도 사용가능하다.
Layout.js
import style from './Layout.module.css';
export default function Layout({ children }) {
return <div className={style.container}>{children}</div>;
}
Layout.module.css
.container {
max-width: 36rem;
padding: 0 1rem;
margin: 3rem auto 6rem;
}
styles/global.css
에 스타일 코드를 작성하고 pages/_app.js
에서 import만 하면 전체 페이지에 스타일이 적용 된다.
반드시
_app.js
내에 글로벌 스타일을 로드한다!