[생활코딩-Reat] 개발환경

4 minute read

개발환경

  • 공식문서에서 시작하기를 보면 여러가지 React를 시작할 수 있는 방법들이 있다.

    React - 사용자 인터페이스를 만들기 위한 JavaScript 라이브러리

  • 툴체인 (toolchains) : 리액트로 앱을 개발할 때, 목표가 어떤것이냐에 따라 목표를 달성하기 위해 필요한 여러가지 개발 환경 & 도구들을 잘 모아서 우리에게 한방에 제공해주는 편리한 도구들

  • npm
    • node.js 라는 기술을 이용해서 만들어진 여러 앱들을 CLI 환경에서 손쉽게 설치할 수 있도록 도와주는 도구
    • node.js의 앱스토어같은 역할을 하는 소프트웨어
  • npm vs npx ??
    • npm : 프로그램을 설치하는 프로그램
    • npx : (필요한) 프로그램을 임시로 설치해서 딱 한번만 실행시키고 지운다.
      • 장점
        • 컴퓨터 공간을 낭비하지 않는다.
        • 설치해서 실행할 때마다 프로그램을 다운로드해서 새로 받기 때문에 항상 최신 상태이다.
  • 순서
    1. npm 설치
    2. Create React App 설치
    3. Create React App을 이용해서 개발을 할 수 있는 개발 환경을 완성

1. npm을 이용해서 create-react-app 설치하기

npm을 설치할 때는 node.js라는 프로그램을 컴퓨터에 설치해야 한다.

2. create-react-app을 이용해서 개발환경 구축

  • -g : 어디에서든지 (설치하려는) 앱을 실행할 수 있도록 해준다.
$ npm install -g create-react-app
$ create-react-app -V
4.0.3  <- 버전이 나오면 ok
  • 확인

    images/dev_setting-Untitled%201.png

3. create-react-app을 이용해서 개발환경 구축

  • 개발환경을 어느 디렉토리에 셋팅할지 정의

    • ‘react-app’ 이라는 디렉토리를 만들고 create-react-app에게 이 디렉토리를 리액트 개발환경으로 만들어달라고 명령한다.
  • 개발환경으로 만들려는 디렉토리 위치에서 명령을 실행

      ~/Study/React/react-app  create-react-app .
    

    /assets/images/LANGUAGE/react/dev_setting-Untitled%202.png

4. 샘플 앱 실행하기

$ npm run start

# 종료
# ctrl + c

/assets/images/LANGUAGE/react/dev_setting-Untitled%203.png

→ 브라우저 새창이 열리면서 다음과 같은 화면을 볼 수 있다.

개발 시 url에 접속해서 개발되는 모습을 확인할 수 있다.

브라우저에서 보여지는 부분은 create-react-app이 가장 최소한의 앱을 미리 구현해서 보여주는 것이다.

(리액트 기술을 이용해서 만든 웹앱)

5. JavaScript 코딩하는 법

어떤 디렉터리 구조를 가지고 있고, 어디를 수정하면 될까

디렉토리 구조

public

  • index.html 이 있는 곳
  • 리액트로 만든 애플리케이션이 웹 브라우저 상에서 index.html파일을 실행한 결과이다.

index.html 파일에 있는 내용을 확인해보자

<div id="root"></div>

리액트를 통해서 컴포넌트들을 만들어갈텐데 그 컴포넌트들이 이 div id가 root인 곳에 들어가도록 create-react-app은 약속해놨다. (변경할 수 있다.)

/assets/images/LANGUAGE/react/dev_setting-Untitled%204.png

웹 브라우저에서 개발자 도구로 소스코드를 확인해보자

→ id가 root인 태그 안쪽에 리액트를 통해서 만든 태그들(App, App-header, ..)이 들어가 있다.

images/dev_setting-Untitled%205.png

그러면 id가 root인 태그 안쪽에 들어가는 컴포넌트들은 어떤 파일을 수정해서 만들 수 있을까??

src 즉, 소스라고 되어있는 디렉토리 안에있는 파일들이다.

앞으로 개발 작업을 하게 되면 모든 대부분의 파일을 src 디렉토리 안에 넣게 될 것이다.

  • Entry File(진입 파일) : index.js
  • document.getElementById('root')
    • id값이 root인 태그를 선택하는 자바스크립트의 선택자 문법
    • 이를 기반으로 해서 index.html 파일에서 id가 root인 태그와 매핑된다.

images/dev_setting-Untitled%206.png

  • <App /> : 리액트를 통해 만든 사용자 정의 태그 즉, 컴포넌트이다.
  • import App from './App';
    • import 컴포넌트명 from '파일명(.js)'
    • 컴포넌트의 실제 구현은 import를 통해서 './App' (App.js 파일이다. .js 가 생략된 것) 파일을 가져오는 것이다.
  • 이 때, 반드시 리액트는 하나의 태그 안쪽에 나머지 태그들이 존재해야 한다.

    가장 바깥 쪽에는 태그 하나만 있어야한다.

  • component 명은 대문자로 시작!

images/dev_setting-Untitled%207.png

  • 파일을 저장하면 자동으로 reload 된다.

images/dev_setting-Untitled%208.png

[Coding Type] function type VS class type

images/dev_setting-Untitled%209.png

6. CSS 코딩하는 법

create-react-app의 환경아래에서 css를 어떻게 편집하면 될지 알아보자

index.html 파일에서 import './index.css'; 이렇게 index.css 파일을 import하고 있다.

index.css 파일의 내용을 수정해보자

body 태그의 background-color 를 변경하면 index.html의 페이지에서 스타일이 적용된 것을 확인할 수 있다.

images/dev_setting-Untitled%2010.png

App.js 파일에서는 import './App.css'; 이렇게 App.css 파일을 import하고 있다.

App.js 안에 있는 리액트의 컴포넌트가 로드 되었을 때, App.css도 같이 로드되기 때문에 디자인도 함께 적용할 수 있다.

⇒ App이라는 컴포넌트의 디자인을 App 안에 넣는다고 생각하면 된다.

images/dev_setting-Untitled%2011.png

7. 배포하는 법

  • 보통 성능을 높이기 위해서 이전에 다운로드한 파일을 보관해놨다가 (캐싱) 다음에 필요할 때 서버에 요청하지 않고 다운받은 파일을 사용한다.
  • [Empty Cache and Hard Reload] 를 이용해 reload 하면, 캐시데이터를 지워서 모두 새로 다운 받는다.

images/dev_setting-Untitled%2012.png

⇒ “전체 용량이 1.7 MB을 다운로드 받았다.”

images/dev_setting-Untitled%2013.png

기능이 하나도 없는데 1.7 MB나 된다고??

리액트가 개발의 편의성을 위해서 여러가지 기능들을 추가해놓은 상태이기 때문이다.

그래서 create-react-app의 개발환경은 상당히 파일의 무게가 무겁다.

개발자가 사용할 때는 로컬에서 사용하므로 무거워도 괜찮지만 사용자들이 1.7MB 짜리 앱을 사용하도록 하면 안된다…. 여러 보안적인 문제도 생길 수 있다.

그래서 create-react-app은 개발환경을 실행 시킬 때는 npm run start 를 썼는데,

프로덕션 모드의 애플리케이션을 만들 때, (빌드 할때는) npm run build 명령으로 빌드 파일을 만들어야 한다.

⇒ 빌드된 파일이 위치하는 build 디렉토리가 생성된다.

build 디렉토리에서 빌드된 결과물인 index.html 파일 내용을 확인해보자

images/dev_setting-Untitled%2014.png

⇒ 공백이 하나도 없고 읽을 수가 없다. why?

create-react-app이 실제 프로덕션 환경에서 사용되는 앱을 만들기 위해서 이미 가지고 있는 index.html 파일에서 공백과 같이 불필요하게 용량을 차지하는 정보를 싹 지운 것이다.

그래서 용량이 훨씬 작아진다.

src에서 우리가 작업한 여러 파일들도 create-react-app이 알아서 용량을 줄이고, 보안적인 부분을 처리해준다. (ex. 에러메시지 삭제)

실서버 환경 셋팅

  • 실제로 서비스 할 때는 build 안에 있는 파일을 쓰면 된다.
  • 웹 서버의 Document Root (웹서버가 문서를 찾는 최상위 디렉토리)에 이 build 디렉토리 안쪽에 있는 파일들을 위치시키면 된다.

serve -s build

  • serve : npm을 통해서 설치할 수 있는 간단한 웹 서버
  • serve 설치 : 로컬 환경 어디에서든지 serve 명령어를 통해서 웹서버를 설치할 수 있다.

      $ npm install -g serve
    
  • 일회용 웹 서버 설치
    • 한번만 실행 시킬 웹서버를 다운로드 받아서 실행 시킨다.
      $ npx serve 
    
  • -s build : serve라는 웹서버를 다운로드 받아서 실행 시킬 때, (우리가 생성한 빌드디렉토리 경로) build를 Document Root로 하겠다는 옵션
$ npx serve -s build

images/dev_setting-Untitled%2015.png

실행시켜서 배포환경에서 다운로드 받는 리소스 용량을 확인하면 현저하게 작은 것을 확인할 수 있다.

images/dev_setting-Untitled%2016.png