React

2. 간단한 TO-DO 앱 만들며 리액트 익히기 / 상

기 도 2023. 4. 5. 13:09

 01. Create React App으로 실행된 리액트의 기본 구조 살펴보기 

 

npx create-react-app 으로 설치 시 폴더와 파일이 생성된다.

 

[01] 리액트 폴더와 파일

 

- 이름이 수정되면 안되는 파일들

① public/index.html

→ 페이지 템플릿

② src/index.js

→ 자바스크립트 시작점

 

- public

여기에 쓰인 파일들은 오직 public.index.html만 쓰일 수 있다.

 

- src 

대부분의 리액트 소스 코드들을 이곳에 작성한다.

JS 파일과 CSS 파일을 이곳에 넣으면 되며, Webpack은 이곳에 있는 파일만 본다.

즉, 이 폴더 이외에 것은 Webpack에 의해 처리되지 않는다.

 

- Package.json

해당 프로젝트에 대한 정보들이 들어있다.

프로젝트 이름, 버전, 필요한 라이브러리와 라이브러리의 버전이 명시되어 있고 앱을 시작할 때 사용 할 스크립트, 앱을 빌드할 때, 테스트할 때 사용할 스크립트들이 명시되어 있다.

 

 

 02. React App 실행해보기 

 

[02] 명령어

 

" " 안에 있는 명령어로 시작, 빌드, 테스트 한다.

#명령어는 바꿀 수 있다.

 

- "start"

npm run start 명령어로 리액트 앱을 시작할 수 있다.

 

- "build"

npm run build 명령어로 build 폴더를 생성한다.

build 폴더 안에는 배포 시 사용할 파일들이 생성된다.

 

- "test"

App.test.js 파일 안에 작성된 test를 실행한다.

 

 

 03. SPA란 ? 

 

현재 App.js 파일의 소스 코드를 변경하면 변경한 부분이 화면에 적용된다.

이것은 어떤 순서로 실행되고 있을까?

 

- public/index.html

 

[03] public/index.html

 

div 엘리먼트의 id를 root로 해두었다.

#이 부분을 지우면 앱 실행시 아무것도 출력되지 않는다.

 

- src/index.js

 

[03] src/index.js

 

여기서 root id를 가진 div를 잡아 그 엘리먼트 안에서 화면을 꾸밀 수 있게 해준다.

 

- MPA(Multi Page Application)

전통적인 웹 사이트를 만들 때 사용하는 방식.

#a 페이지를 만들면 a.html, b 페이지를 만들면 b.html을 만드는 것.

 

- SPA(Single Page Application)

웹 사이트의 전체 페이지를 하나의 페이지에 담아 동적으로 화면을 바꿔가며 표현.

#최근 사용하는 방식, 즉 하나의 페이지에서 화면 변환을 통해 다른 페이지로 넘어간 것처럼 보이게 한다.

 

- SPA에서의 화면 변환

HTML5의 History API를 사용해서 가능하게 만든다.

자바스크립트 영역에서 History API를 이용해서 현재 페이지 내에서 화면 이동이 일어난 것처럼 작동하게 해준다.

#너무 자세하게 알지 않아도 된다.

 

- History API

History.back() 세션 기록의 바로 뒤 페이지로 이동하는 비동기 메서드. 브라우저의 뒤로 가기를 누르는 것과 같은 효과.
History.forward() 세션 기록의 바로 앞 페이지로 이동하는 비동기 메서드. 브라우저의 앞으로 가기를 누르는 것과 같은 효과.
History.go() 특정한 세션 기록으로 이동하게 해주는 비동기 메서드. 1을 넣어 호출하면 바로 앞 페이지로, -1을 넣어 호출하면 바로 뒤 페이지로 이동.
History.pushState() 주어진 데이터를 세션 기록 스택에 넣는다. 직렬화 가능한 모든 Javascript 객체를 저장하는 것이 가능.
History.replaceState() 최근 세션 기록 스택의 내용을 주어진 데이터로 교체.

 

 

 04. To-Do 앱 소개 및 JSX 알아보기 

 

할 일 목록 애플리케이션은 처음 언어를 배우거나 프레임워크를 익힐 때 많이 만들어보는 앱이다.

 

- JSX (Javascript Syntax Extansion) 

 

[04] JSX

 

자바스크립트의 확장 문법이다.

JSX를 사용하면 UI를 나타낼 때 자바스크립트(logic)와 HTML 구조(markup)를 같이 사용할 수 있기 때문에 기본 UI에 데이터가 변하는 것들이나 이벤트들이 처리되는 부분을 더욱 쉽게 구현할 수 있다.

#사용이 의무는 아니지만, UI 작업시 편리성 때문에 대부분의 사람이 사용한다.

 

- 원래 리액트에서 화면을 그리는 방식

React.createElement API를 사용해서 엘리먼트를 생성한 뒤, 이 객체를 In-Memory에 저장한다. ReactDOM.render 함수를 사용해서 실제 웹 브라우저에 그려준다.

→ 모든 UI를 만들때마다 createElement를 사용해서 컴포넌트를 만들수는 없다. 그렇기에 JSX를 사용한 후 그걸 바벨이 다시 createElement로 바꿔서 사용한다.

 

- JSX를 사용하면서 주의해야 할 문법

 

[04] JSX 주의해야 할 문법

 

JSX는 컴포넌트에 여러 엘리먼트 요소가 있다면 반드시 부모 요소 하나로 감싸줘야 한다.

#자세한 건 만드면서 알아가보자.