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

이제 로컬서버를 돌리도록 하겠습니다.
// npm 으로 할때
npm run dev
// yarn 일때
yarn run dev
터미널에 입력 후 엔터 치면 로컬 서버가 생성이 됩니다.
그러면 하단의 이미지 처럼 완료가 뜨고 로컬 주소가 보입니다.
그 로컬 주소를 컨트롤 클릭하면 서버창이 열립니다.

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

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 |
---|