[ReactJS로 영화 웹 서비스 만들기] Create React App

2021. 11. 17. 17:34· course/nomadcoder
  • 이전 연습에서는 react를 import하고 일일히 다 설정해주었지만, npx로 create-react-app 하면 훨씬 개발하기 편함
  • 터미널에 npx create-react-app movie-app(생성할 디렉토리 이름)
    • 이미 존재하는 폴더 명과 같게 짓지 않도록 유의
    • npm(node package manager): nodeJS의 모듈들을 패키지화하여 저장하고, 패키지 설치 및 관리 도구
    • npx(node package runner): 일회성으로 원하는 패키지를 npm registry에 접근하여 실행하고 설치하는 도구
      • 패키지 업데이트 시, npm은 기존 패키지 제거하고 새로 설치해야함
  • movie-app 디렉토리 터미널에서 npm start하면 노드 서버 실행 (ctrl + c 로 종료)
    • react-app 디렉토리의 package.json 에서 사용가능한 모든 스크립트 확인 가능
    • 초기 화면 (localhost:3000)
    • src 디렉토리: 내가 만드는 모든 파일을 넣을 곳
    • create-react-app이 src에 있는 내가 만든 어플리케이션을 public 디렉토리의 index.html에 넣어줌
    • App.js를 수정하고 저장하면 웹페이지에 자동 로드된다
      • WSL2 사용 시 자동 로드가 매우매우 느린 문제 발생 -> linux의 home 디렉토리에 어플리케이션 복사
      • 우분투에서
        sudo cp {movie-app 디렉토리 위치} ~/
        cp(copy), ~/ : linux 홈 디렉토리 위치
        • 또는 어플리케이션의 상위 위치로 이동해서 sudo cp movie-app ~/
      • VSC에서 movie-app 실행 후 서버를 켜보니 react-scripts 관련 문제 발생
        npm install -g create-react-app
        npm install --save react react-dom
        
        npm i react-scripts​
      • WSL2에서는 mnt에서 작업하면 매우 느리다고 함
      • ※ 참고
        explorer.exe .​
         우분투 터미널에서 현재 작업중인 디렉토리 열기
    • css나 testing 파일은 사용 안하므로 삭제
    • App.js에서 Button import 하고 사용 안했을 때 나오는 warning
    •  
    • 요소마다 파일을 분리하며 코딩, 요소별로 스타일링 가능 (랜덤 클래스명 부여)
    • // App.js
      import Button from "./Button";
      import styles from "./App.module.css";
      
      function App() {
        return (
          <div>
            <h1 className={styles.title}>Welcome back to react!</h1>
            <Button text={"continue"} />
          </div>
        );
      }
      
      export default App;
    • /* App.module.css */
      .title {
        font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen,
          Ubuntu, Cantarell, "Open Sans", "Helvetica Neue", sans-serif;
        font-size: 18px;
      }
      이름.module.css
    • // Button.js
      import PropTypes from "prop-types";
      import styles from "./Button.module.css";
      
      function Button({ text }) {
        return <button className={styles.btn}>{text}</button>;
      }
      
      // js 코드로 inline styling
      // css 파일로 따로 관리하는게 더 편함
      // function Button({ text }) {
      //   return (
      //     <button
      //       style={{
      //         backgroundColor: "tomato",
      //         color: "white",
      //       }}
      //     >
      //       {text}
      //     </button>
      //   );
      // }
      
      Button.propTypes = {
        text: PropTypes.string.isRequired,
      };
      
      // App.js에서 Button.js에서 만든 Button을 불러올 수 있도록 export
      export default Button;
      터미널에 npm i prop-types 하고 파일에 import
    • /* Button.module.css */
      .btn {
        color: white;
        background-color: tomato;
      }
    • // index.js
      import React from "react";
      import ReactDOM from "react-dom";
      import App from "./App";
      // import "./styles.css";
      // style.css 파일을 만들어서 전역적으로 스타일링하면 여러 요소에 효율적으로 접근하기 어려움
      
      ReactDOM.render(
        <React.StrictMode>
          <App />
        </React.StrictMode>,
        document.getElementById("root")
      );
저작자표시 비영리 (새창열림)

'course > nomadcoder' 카테고리의 다른 글

[ReactJS로 영화 웹 서비스 만들기] Effects  (0) 2021.12.22
[ReactJS로 영화 웹 서비스 만들기] Props  (0) 2021.11.12
[ReactJS로 영화 웹 서비스 만들기] State  (0) 2021.11.11
[ReactJS로 영화 웹 서비스 만들기] Basics of React  (0) 2021.11.09
'course/nomadcoder' 카테고리의 다른 글
  • [ReactJS로 영화 웹 서비스 만들기] Effects
  • [ReactJS로 영화 웹 서비스 만들기] Props
  • [ReactJS로 영화 웹 서비스 만들기] State
  • [ReactJS로 영화 웹 서비스 만들기] Basics of React
hjkim0502
hjkim0502
개발 일지
hjkim0502
CODELOG
hjkim0502
글쓰기
전체
오늘
어제
  • Codelog (168)
    • course (61)
      • nomadcoder (5)
      • spartacoding (22)
      • inflearn (27)
      • 생활코딩 (7)
    • CS (68)
      • algorithm & data structure (34)
      • OS (26)
      • CA (0)
      • DB (8)
      • Network (0)
    • 코딩테스트 (2)
    • 이노베이션 캠프 (37)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 카카오
  • 자바
  • leetcode
  • JS
  • Memory
  • css
  • dfs
  • db
  • html
  • SQL
  • ORM
  • JPA
  • inflearn
  • KOCW
  • Python
  • til
  • 프로그래머스
  • OS
  • 인프런
  • 생활코딩
  • Java
  • 레벨2
  • 파이썬
  • spring
  • JPQL
  • MongoDB
  • cs
  • QueryDSL
  • ajax
  • API

최근 댓글

hELLO · Designed By 정상우.v4.2.2
hjkim0502
[ReactJS로 영화 웹 서비스 만들기] Create React App
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.