본문으로 바로가기

Next.js로 블로그 만들기 - 2

category Next.js 2021. 3. 27. 14:43

정보 제공

넥스트는 public과 같은 최상위 디렉토리에 정적 파일을 제공할 수 있다

메타데이터

넥스트는 html 없이 jsx만으로도 페이지를 만들어 준다

각 페이지에 html태그, title정보나 다른 메타데이터 정보를 수정하고 싶다면 어떻게 해야할까?

넥스트의 Head 컴포넌트를 사용하면 된다

이 컴포넌트는 해당 페이지의 <head>에 포함할 수 있는 정보들을 수정할 수 있게 해준다

import Link from "next/link";
import Head from "next/head";

export default function FirstPost(){
    return (
        <div>
            <Head>
                <title>First Post</title>
            </Head>
            <h1>First Post</h1>
            <h2>
                <Link href={'/'}>
                    <a >back to home</a>
                </Link>
            </h2>

        </div>
    )
}

넣고 싶은 메타데이터가 있다면 Head 컴포넌트 내부에 넣으면 된다

<Head>
  <title>First Post</title>
  <meta property="og:title" content="My page title" key="title" />
</Head>

스타일링

넥스트는 sass와 CSS를 기본적으로 지원한다

모듈CSS

우선 최상위 디렉토리에 components 폴더를 만들고 그 아래에 Layout.js를 만들고 css모듈도 작성해주자

pages 하위의 폴더만 라우트 대상이다 여기에 만들어진 js들은 그냥 컴포넌트로 작동한다

import React from 'react';
import styles from './layout.module.css';

const Layout = ({children}) => {
    return (
        <div className={styles.container}>
            {children}
        </div>
    );
};

export default Layout;
.container {
    max-width: 36rem;
    padding: 0 1rem;
    margin: 3rem auto 6rem;
}

넥스트는 css모듈을 지원하고 코드스플리팅 또한 적용된다

전역 스타일링

위에서 사용한 모듈 스타일링은 컴포넌트 하나를 스타일링하기에 최적화된 방법이다

프로젝트의 모든 페이지에 적용되어야할 스타일이 있다면 _app.js를 사용하는 것이 바람직하다

pages 바로 아래에 _app.js를 생성하자

export default function App({ Component, pageProps }) {
    return <Component {...pageProps} />
}

이 App컴포넌트는 pages 하위에 있는 모든 컴포넌트들이 사용하는 최상위 레벨의 컴포넌트이다

\app.js를 추가할 때는 서버를 껐다가 켜주어야한다_

이제 전역 스타일링을 해주기위해 프로젝트 최상위에 styles폴더를 만들고 그 아래에 global.css를 만들어주자

html,
body {
    padding: 0;
    margin: 0;
    font-family: -apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu,
    Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif;
    line-height: 1.6;
    font-size: 18px;
}

* {
    box-sizing: border-box;
}

a {
    color: #0070f3;
    text-decoration: none;
}

a:hover {
    text-decoration: underline;
}

img {
    max-width: 100%;
    display: block;
}

first-post페이지에 가 보면 적용된 것을 볼 수 있다

'Next.js' 카테고리의 다른 글

Next.js로 블로그 만들기 - 5  (0) 2021.04.06
Next.js로 블로그 만들기 - 4  (0) 2021.03.30
Next.js로 블로그 만들기 - 3  (0) 2021.03.28
Next.js로 블로그 만들기 - 1  (0) 2021.03.25
next.js 란?  (0) 2021.03.21