리액트 기초에 해당하는 지식을 배우게 될 것.
HTML, CSS = 정적 페이지를 제작 가능
HTML, CSS + JavaScript = 동적 페이지 제작 가능
요즘에는 브라우저 상으로도 자연스러운 흐름으로 많은 것을 할 수 있고, 이를 위해서는 수많은 상태를 관리해줘야 한다.
많은 DOM요소들을 관리하고, 상태값 업데이트 관리를 최소한으로 하고, 사용자 인터페이스 구현 개발에 집중할 수 있도록 해주는 것이 프레임워크, 라이브러리를 사용하는 이유이다.
"우리는 지속해서 데이터가 변화하는 대규모 애플리케이션을 구축하기 위해 리액트를 만들었습니다."
-React-
페이스북이 리액트를 만들기 전에도 앵귤러, 백본 등의 수많은 프레임워크들이 존재했다.
해당 프레임워크들은 데이터단을 담당하는 Model, 화면을 보여주는 View, 사용자가 발생시키게 되는 이벤트를 관리하는 Controller로 이루어진 MVC패턴, MVC패턴으로부터 파생된 MVVM, MVW 등의 패턴들로 이루어져있다.
여기서 공통점은 Model이다. 양방향 바인딩을 통해서 Model의 값이 변하면 View에서도 변화시켜주고, View에서 값이 변하면 Model에서도 변화시켜준다.
변화(Mutation)는 상당히 복잡한 작업이다. 특정 이벤트 발생 시 Model에 변화를 일으키고, 이 변화를 일으킴에 따라 어떤 DOM을 가져와서 어떤 방식으로 View를 변화시켜줄지 로직이 필요하다.
페이스북에서는 위 과정에대해 이런 생각을 했다. "변화가 일어나면 Mutation을 하지 말고, 기존에 있던 View를 날려버리고 새로 만들어버리면 어떨까?"라는 생각을 시작으로 리액트 개발이 시작된 것이다.
하지만, 새로운 View를 만든다는 것은 성능적으로 엄청난 문제를 야기한다. 그래서 존재하는 것이 Virtual DOM(가상의 돔)이다.
가상의 돔에 한 번 렌더링을 하고 기존의 돔과 비교 후에 변화된 곳만 업데이트를 하는 것이다.
영상 참고-React 와 Virtual DOM 의 이야기
리액트는 Virtual DOM을 성공적으로 사용한 선발주자이다. 리액트외에도 Vue, Marko, Maquette, Mithril 등이 있다.
어마어마한 생태계가 리액트를 특별하게 만드는 점 중 하나이다.
또한, 사용하는 곳이 많다. Airbnb, BBC, Cloudflare, Codecademy, Coursera, Dailymotion, eBay, Twitch, Walmert, Yahoo, FACEBOOK 등..