withai

웹 개발 학습 일지 (Learning Log)

2025-01-01

cursor ai로 사이트를 만들고 있다. 그런데 어떻게 어떻게(=ai에 돈을 써서)만들고는 있는데, 이걸 내가 뭘 하고 있는건지 이해는 못함. 그래서 공부를 시작했다. 내가(아니, 돈 내고 쓰는 ai가)만든 코드를 다시 ai에게 물어보며 학습하는 것.
오늘 처음으로 React와 Next.js에 대해 학습을 시작했다.
JavaScript도 모르는데, 어느새 나는 TypeScript를 쓰고 있었던 것이었다… Wow!!

1. 기본 개념 학습 (비유로 이해하기)

1.1 웹 개발의 큰 그림

1.2 React의 주요 특징

  1. 컴포넌트와 Props
    • 비유: “주문서”
    • 설명:
      // 주문서처럼 필요한 정보를 전달
      <StorySection
        title="메뉴이름"    // 필수 항목
        content="설명"      // 필수 항목
        summary="요약"      // 선택 항목 (?)
      />
      
  2. TypeScript 인터페이스
    • 비유: “설계도”
    • 설명:
      // 어떤 정보가 필요한지 미리 정의
      interface StorySectionProps {
        background: string;  // 필수로 필요!
        title: string;      // 필수로 필요!
        summary?: string;   // 있으면 좋고, 없어도 됨
      }
      

2. 개발 환경

2.1 사용 중인 도구들

2.2 React 컴포넌트의 구조

3. React 컴포넌트 작성 규칙

3.1 이름 짓기 규칙

  1. 필수 규칙
    • 반드시 대문자로 시작해야 함
      // 좋은 예:
      StorySection
      Header
      MainContent
      
      // 나쁜 예:
      storySection  // ❌
      header        // ❌
      
    • 파일 이름도 컴포넌트 이름과 동일하게
      StorySection.tsx
      Header.tsx
      
  2. 권장 규칙
    • 의미있는 이름 사용
      // 좋은 예:
      UserProfile
      NavigationMenu
      ProductCard
      
      // 나쁜 예:
      Thing1     // ❌
      Component  // ❌
      Div1       // ❌
      
    • 역할을 알 수 있게 짓기
      // 일반적인 패턴들:
      xxxContainer  // 다른 컴포넌트를 담는 컨테이너
      xxxList       // 목록
      xxxItem       // 목록의 항목
      xxxCard      // 카드 형태의 UI
      xxxButton    // 버튼
      xxxLayout    // 레이아웃
      

3.2 컴포넌트 사용 규칙

  1. HTML vs React 컴포넌트
    // HTML 태그는 소문자
    <div>
    <span>
    <button>
    
    // 커스텀 컴포넌트는 대문자
    <StorySection>
    <Header>
    <CustomButton>
    
  2. Props 규칙
    // HTML 속성
    <img src="이미지.jpg" class="클래스">
    
    // React props
    <StorySection
      background="이미지.jpg"
      className="클래스"    // class 대신 className 사용
    />
    
  3. 닫는 태그 필수
    // HTML에서는 가능하지만
    <img src="이미지.jpg">
       
    // React에서는 반드시 닫아야 함
    <img src="이미지.jpg" />
    

4. 유용한 비유들 모음

  1. 컴포넌트 = 레고 블록
    • 작은 블록들을 조립해서 큰 것을 만듦
    • 블록은 재사용 가능
    • 블록 하나를 수정하면 그 블록을 사용한 모든 곳이 변경됨
  2. 서버/클라이언트 = 레스토랑 주방/홀
    • 주방(서버): 음식 준비, 재료 관리
    • 홀(클라이언트): 손님 응대, 서빙, 주문 받기
  3. Props = 주문서
    • 필요한 정보를 정확하게 전달
    • 필수 항목과 선택 항목 구분
    • 정해진 형식으로 작성
  4. TypeScript = 설계도
    • 미리 구조를 정의
    • 실수 방지
    • 명확한 계획 수립

5. 오늘의 배운 점

  1. React 컴포넌트는 레고 블록처럼 조립해서 사용할 수 있다
  2. Next.js는 레스토랑처럼 주방(서버)과 홀(클라이언트)로 나뉘어 있다
  3. Props는 주문서처럼 컴포넌트에 정보를 전달한다
  4. TypeScript는 설계도처럼 미리 구조를 정의한다

6. 아직 모호한 부분

7. 다음 학습 목표