01 App
01. App.jsx — 전체 레이아웃 조립
이번 단계에서 할 일
만들 컴포넌트들을 App.jsx 에 미리 배치합니다.
지금은 빈 껍데기만 만들고, 다음 단계에서 하나씩 채워나갑니다.
App.jsx 역할
1App.jsx2 ├── <Nav /> ← 네비게이션3 ├── <Hero /> ← 히어로 섹션4 ├── <main>5 │ ├── <AboutMe /> ← 소개6 │ ├── <Projects /> ← 프로젝트7 │ └── <Contact /> ← 연락처8 │ </main>9 └── <Footer /> ← 하단 푸터STEP 1 — 빈 컴포넌트 파일 6개 만들기
src/components/ 폴더를 만들고 아래 파일들을 각각 생성합니다.
지금은 이름만 표시되는 단순한 내용으로 작성합니다.
src/components/Nav.jsx
1const Nav = () => {2 return <div>Nav</div>3}4export default Navsrc/components/Hero.jsx
1const Hero = () => {2 return <div>Hero</div>3}4export default Herosrc/components/AboutMe.jsx
1const AboutMe = () => {2 return <div>AboutMe</div>3}4export default AboutMesrc/components/Projects.jsx
1const Projects = () => {2 return <div>Projects</div>3}4export default Projectssrc/components/Contact.jsx
1const Contact = () => {2 return <div>Contact</div>3}4export default Contactsrc/components/Footer.jsx
1const Footer = () => {2 return <div>Footer</div>3}4export default FooterSTEP 2 — App.jsx 작성
1import Nav from './components/Nav'2import Hero from './components/Hero'3import AboutMe from './components/AboutMe'4import Projects from './components/Projects'5import Contact from './components/Contact'6import Footer from './components/Footer'7
8const App = () => {9 return (10 <div className="app container">11 <Nav />12 <Hero />13 <main>14 <AboutMe />15 <Projects />16 <Contact />17 </main>18 <Footer />19 </div>20 )21}22
23export default App코드 설명
import 란?
다른 파일에서 만든 컴포넌트를 불러오는 것입니다.
1import Nav from './components/Nav'2// ↑ ↑3// 내가 부를 이름 파일 경로./는 현재 파일과 같은 폴더를 의미합니다App.jsx는src/안에 있으므로./components/Nav는src/components/Nav.jsx
<div className="app container"> 으로 감싸는 이유
JSX는 반드시 하나의 부모 태그 안에 내용이 있어야 합니다.
1// 오류 — 최상위 태그가 2개2return (3 <Nav />4 <Hero />5)6
7// 정상 — 하나의 div로 감쌈8return (9 <div className="app container">10 <Nav />11 <Hero />12 </div>13)app— 전체 페이지를 감싸는 최상위 클래스container— 콘텐츠 너비를 제한하고 가운데 정렬 (02_CSS기초에서 정의)
export default 란?
다른 파일에서 이 컴포넌트를 import 할 수 있게 내보내는 것입니다.
1// 내보내기2export default App3
4// 불러오기5import App from './App'브라우저 확인
저장 후 브라우저를 열면 아래처럼 보입니다.
1Nav2Hero3AboutMe4Projects5Contact6Footer텍스트만 나오는 게 정상입니다. 다음 단계부터 하나씩 꾸밉니다.