누구든지 하는 리액트 (by velopert) 강의와 블로그 글을 보고 정리한 글입니다.
웹 사이트를 만들 때는 프론트엔드 라이브러리 도움 없이 만들 수 있다.
정적 페이지를 만드는 거라면 Javascript 없이도 그냥 HTML, CSS를 사용해서 만들 수 있다. 동적 페이지라면 Javascript를 추가해주어 유저의 행동 흐름에 따라 동적으로 화면을 보여주게 한다.
그.러.나
단순히 요즘의 웹은 웹 페이지가 아닌 웹 애플리케이션이다.
🙄 웹 페이지 vs 웹 애플리케이션
이때, 유저인터페이스(여기서는 웹 어플리케이션)를 동적으로 나타내기 위해서는 정말 수많은 상태를 관리를 해줘야 한다.
EX
<div>
<h1>Counter</h1>
<h2 id="number">0</h2>
<button id="increase">+</button>
</div>
우리가 버튼을 눌러서 숫자 0 값을 바꿔주려면 각 DOM element(HTML element를 의미, 여기서는 h2, button)에 대한 reference를 찾고 해당 DOM에 접근해서 원하는 작업을 한다.
var number = 0;
var elNumber = document.getElementById('number'); // h2 dom 레퍼런스를 id로 접근
var btnIncrease = document.getElementById('increase'); // button dom 레퍼런스를 id로 접근
btnIncrease.onclick = function() { // 이벤트 설정
number++;
elNumber.innerText = number; // 업데이트
}
만약 프로젝트가 사용자와의 interaction이 많지 않다면, 사실상 프론트엔드 라이브러리는 필요하지 않다.(직접 구현하는게 더 좋을지도!)
그러나 프로젝트 규모가 커지고 다양한 유저 인터페이스와 interaction을 제공하게 된다면 많은 DOM element를 직접 관리하고 코드를 정리하기엔 힘든 일이다.
따라서 웹 개발할 때, 귀찮을 DOM 관리와 상태값 업데이트 관리를 최소화하고, 오직 기능 개발과 사용자 인터페이스를 구현하는 것에 집중할 수 있도록 하기 위해 여러 라이브러리 or 프레임워크들이 만들어졌다. 우리가 프론트엔드 라이브러리 or 프레임워크를 사용하는 것은 개발 시 생산성과 유지 보수와 관련이 있다.
대표적으로 Angular, Ember, Backbone, Vue, React등이 있다.
사실 가장 잘하고 좋아하는 도구를 사용하는게 좋은 거다~~
서드파티 라이브러리
개인 개발자나 프로젝트 팀, 혹은 업체등에서 개발하는 라이브러리, 즉 제 3자 라이브러리
React 개발 팀에서도 개발 중인 서드파티 라이브러리도 있음.
EX) React Router, Redux
Webpack?? 모듈 번들러??
웹 애플리케이션을 구성하는 자원(HTML, CSS, Javascript, Images 등)을 각각 모듈로 보고 다른 종류의 모듈을 모두 자바스크립트 코드로 합쳐서 import할 수 있도록 만드는 도구