Next.js 시작해보자! (2)

1부를 다 완료 했다면 하단의 이미지처럼 폴더가 다 만들어 집니다. (초반 세팅에 따라 있고 없고의 차이가 있습니다.)

etc-image-0
처음 설치후 폴더 구조

 

 

이제 로컬서버를 돌리도록 하겠습니다.

// npm 으로 할때

npm run dev

// yarn 일때

yarn run dev

 

터미널에 입력 후 엔터 치면 로컬 서버가 생성이 됩니다.

그러면 하단의 이미지 처럼 완료가 뜨고 로컬 주소가 보입니다.
그 로컬 주소를 컨트롤 클릭하면 서버창이 열립니다.

etc-image-1
성공

 


화면에서 보여지는 모습은 src/app/page.js 파일입니다.

etc-image-2
처음 보여지는 페이지 경로

import Image from "next/image";

export default function Home() {
  return (
    <div className="grid grid-rows-[20px_1fr_20px] items-center justify-items-center min-h-screen p-8 pb-20 gap-16 sm:p-20 font-[family-name:var(--font-geist-sans)]">
      <main className="flex flex-col gap-8 row-start-2 items-center sm:items-start">
        <Image
          className="dark:invert"
          src="/next.svg"
          alt="Next.js logo"
          width={180}
          height={38}
          priority
        />
        <ol className="list-inside list-decimal text-sm text-center sm:text-left font-[family-name:var(--font-geist-mono)]">
          <li className="mb-2">
            Get started by editing{" "}
            <code className="bg-black/[.05] dark:bg-white/[.06] px-1 py-0.5 rounded font-semibold">
              src/app/page.js
            </code>
            .
          </li>
          <li>Save and see your changes instantly.</li>
        </ol>

        <div className="flex gap-4 items-center flex-col sm:flex-row">
          <a
            className="rounded-full border border-solid border-transparent transition-colors flex items-center justify-center bg-foreground text-background gap-2 hover:bg-[#383838] dark:hover:bg-[#ccc] text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5"
            href="https://vercel.com/new?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
            target="_blank"
            rel="noopener noreferrer"
          >
            <Image
              className="dark:invert"
              src="/vercel.svg"
              alt="Vercel logomark"
              width={20}
              height={20}
            />
            Deploy now
          </a>
          <a
            className="rounded-full border border-solid border-black/[.08] dark:border-white/[.145] transition-colors flex items-center justify-center hover:bg-[#f2f2f2] dark:hover:bg-[#1a1a1a] hover:border-transparent text-sm sm:text-base h-10 sm:h-12 px-4 sm:px-5 sm:min-w-44"
            href="https://nextjs.org/docs?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
            target="_blank"
            rel="noopener noreferrer"
          >
            Read our docs
          </a>
        </div>
      </main>
      <footer className="row-start-3 flex gap-6 flex-wrap items-center justify-center">
        <a
          className="flex items-center gap-2 hover:underline hover:underline-offset-4"
          href="https://nextjs.org/learn?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
          target="_blank"
          rel="noopener noreferrer"
        >
          <Image
            aria-hidden
            src="/file.svg"
            alt="File icon"
            width={16}
            height={16}
          />
          Learn
        </a>
        <a
          className="flex items-center gap-2 hover:underline hover:underline-offset-4"
          href="https://vercel.com/templates?framework=next.js&utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
          target="_blank"
          rel="noopener noreferrer"
        >
          <Image
            aria-hidden
            src="/window.svg"
            alt="Window icon"
            width={16}
            height={16}
          />
          Examples
        </a>
        <a
          className="flex items-center gap-2 hover:underline hover:underline-offset-4"
          href="https://nextjs.org?utm_source=create-next-app&utm_medium=appdir-template-tw&utm_campaign=create-next-app"
          target="_blank"
          rel="noopener noreferrer"
        >
          <Image
            aria-hidden
            src="/globe.svg"
            alt="Globe icon"
            width={16}
            height={16}
          />
          Go to nextjs.org →
        </a>
      </footer>
    </div>
  );
}

 

이 내용물이 처음에 보여지는 내용입니다. function 안쪽에 return 안쪽의 내용을 전체 선택후 삭제.

export default function Home() {
  return (
    <div>hello</div>
  );
}

 

그리고 대충 div안에 hello를 작성 해주고 저장 해서 화면을 보면 출력이 되고 있는걸 확인이 가능합니다.

export default function Home() {
  return (
    <div>
      <header>header</header>
      <main>
        <section>section1</section>
        <section>section2</section>
        <section>section3</section>
      </main>
      <footer>footer</footer>
    </div>
  );
}

Next.js의 기본적인 사용법과 구조를 알기위해 일단 hello를 지우고 위 내용을 넣어줍니다.

 

export default function Home() {
  function Header() {
    return <header>header</header>;
  }
  return (
    <div>
      <Header />
      <main>
        <section>section1</section>
        <section>section2</section>
        <section>section3</section>
      </main>
      <footer>footer</footer>
    </div>
  );
}

React에서는 컴포넌트를 사용해서 다 쪼개서 사용합니다.

지금은 저렇게 쪼갤수 있다는걸 보여주기위해 한 페이지 내에서 따로 분리를 해둔 상태입니다.

쪼갠 Header를 return 반환을 시켜서 다시 원래 있던 자리에 

<Header />컴포넌트를 불러와 줍니다.

 

export default function Home() {
  function Header() {
    return <header>header</header>;
  }
  function Section() {
    return (
      <div>
        <section>section1</section>
        <section>section2</section>
        <section>section3</section>
      </div>
    );
  }
  function Footer() {
    return <footer>footer</footer>;
  }
  return (
    <div>
      <Header />
      <main>
        <Section></Section>
      </main>
      <Footer />
    </div>
  );
}

Header, Section, Footer 를 쪼개고 다시 불러온 모습

화면의 변화는 첨음과 똑같습니다.

 

 

3부에서..

'React' 카테고리의 다른 글

next.js를 시작해보자!  (0) 2024.11.09