Spring Boot (Maven) with React Study day 1
목적
===
- Spring boot 와 React 를 활용하여 간단한 웹 페이지를 만들어보고자 한다.
1. React JS 란?
- 페이스북에서 개발한 라이브러리
- UI 를 컴포넌트화하여 재사용에 용이함
- Virtual DOM 이라는 개념을 사용
- JSX
1-1. Virtual DOM?
- UI 의 가상의 DOM 객체를 메모리에 저장하고 이를 라이브러리를 통해 실제 DOM 에 동기화 하는 프로그래밍 개념
- 이와 같은 과정을 재조정이라고 한다.
- 기존의 DOM 의 경우 페이지를 로드할때 재구성되는 과정에서 성능이 낮은데, Virtual DOM 의 경우 동적인 페이지 로드 환경에서 이전값과 현재값을 비교하여 차이가 있는 부분만 변경해주기 때문에 성능상 이점이 있다.
- 단, DOM 의 경우 무조건 느린 것이 아닌 ReFlow 현상이 잦은 페이지에서 성능 저하가 나오며 그외의 ReDraw 상황 또는 데이터 변화가 적은 환경에서는 성능 차이가 없다.
- Virtual DOM 의 경우 데이터의 잦은 변화가 있는 페이지에서 유용하다는 점을 주목하여 이에 맞게 사용하는 편이 낫다.
1-2. JSX?
- Javascript 확장 문법
- Javascript 코드 안에서 UI 관련작업을 할때 도움이 되며, React 의 에러 처리에도 도움
- React 의 이벤트 처리방식, 상태가 변하는 방식, 데이터를 화면에 보여줄 방식등 로직과 마크업을 컴포넌트에 묶어 사용
const name = 'Tester'; const element = <h1>Hellow, {name}</h1> // JSX, name 변수를 JSX 안에 넣어주었다. ReactDOM.render(element, document.getElementById('root'));
- 모든 Javascript 표현식을 사용할 수 있다. ```javascript function formatName (user) { return user.firstName + ‘ ‘ + user.lastName; }
const user = { firstName: ‘First’, lastName: ‘last’ };
const element = (
Hello, {formatName(user)}
)
ReactDOM.render(element, document.getElementById(‘root’));
- JSX 도 하나의 Javascript 객체이며, **if,for loop** 로 사용이 가능하다.
- MarkUp 과 같이 Attribute 를 태그안에 넣어줄수 있으며, 변수 역시 삽입이 가능하다. 단, 변수 삽입 시에는 **""** 를 제외하고 중괄호로 감싼다.
- Attribute 이름은 JSX 의 특성상 Javascript 에 가깝기 때문에 camelCase 를 사용.
```javascript
const element = <img src={user.avatarUrl}></img>;
- ReactDOM 은 렌더링 전 모든 값을 이스케이프(<, …) 하므로, 애플리케이션에서 명시적으로 작성되지 않은 내용은 주입되지 않는다.
- 모든 항목은 렌더링전 문자열로 변환되며, 이러한 특성으로 XSS 공격을 방지 할 수 있다.
2. React JS 체험
2-1. 세팅
- NodeJS 설치 : https://nodejs.org/ko/ 에서 LTS 버전으로 설치하였다.
- NPM 설치 : NodeJS 를 설치하면 NPM 이 자동으로 설치된다.
- 설치 확인
$ node -v $ v10.16.0 $ npm -v $ 6.13.7
2-2. React 프로젝트 생성
- NPX : NPM 패키지를 실행하는 명령어
- create-react-app 로 프로젝트 생성
$ npx create-react-app my-app
- 다음과 같은 프로젝트 구조가 생성
- “npm start” 명령어로 실행
$ npm start
- http://localhost:3000 으로 접속하고 다음 화면이 나오면 정상적으로 동작된것이다.
정리
- React JS 는 라이브러리이다.
- JSX, Virtual DOM 등을 사용한다.
- 설치방법
다음에 정리할 내용
- Spring Boot 설치
- Spring Boot & React 연동
댓글남기기