[Session] Front-End by React

OFFDUTYBYBLO·2020년 6월 16일
0

React 

목록 보기
4/14
post-thumbnail

1. React의 탄생

  • HTML과 CSS로 정적인 웹페이지 제작
  • 동적인 웹페이지를 위해 Javascript 탄생
  • Javascript가 어려운 부분과 DOM의 복잡한 구조를 쉽게 만들어준 Jquery의 등장으로 JS를 몰라도 웹페이지 개발이 가능해짐
  • 하지만 더 많고 복잡해진 기능들을 구현하기 위해서는 결국 Javascript가 필요해짐
  • 이때부터 VanilaJS 개념이 나오면서 front-end개발자라면 JS를 잘 다뤄야만했다.
  • 이런 복잡한 부분을 좀 더 쉽고 편하게 접근하기위해 프레임워크와 라이브러리가 탄생했다.
  • 대표적으로 JS기반 프레임워크는 Angular와 Vue, 라이브러리는 React가 있다.

Framework

https://webclub.tistory.com/458
프레임워크는 뼈대나 기반구조를 뜻하고, 제어의 역전 개념이 적용된 대표적인 기술이다. 소프트웨어에서의 프레임워크는 '소프트웨어의 특정 문제를 해결하기 위해서 상호 협력하는 클래스와 인터페이스의 집합'이라 할 수 있으며, 완성된 어플리케이션이 아닌 프로그래머가 완성시키는 작업을 해야한다.
객체 지향 개발을 하게 되면서 통합성, 일관성의 부족이 발생되는 문제를 해결할 방법중 하나라고 할 수 있다.

  • 특징
    1) 특정 개념들의 추상화를 제공하는 여러 클래스나 컴포넌트로 구성
    2) 추상적인 개념들이 문제를 해결하기 위해 같이 작업하는 방법을 정의
    3) 컴포넌트들은 재사용이 가능
    4) 높은 수준에서 패턴들을 조작화 할 수 있다.

Library

라이브러리는 단순 활용가능한 도구들의 집합을 말한다. 즉, 개발자가 만든 클래스엣 호출하여 사용, 클래스의 ㅏㄴ열로 필요한 클래스를 불러서 사용하는 방식이다.

프레임워크와 라이브러리의 차이점

제어 흐름에 대한 주도성이 누구에게/어디에 있는가에 있다. 즉, 어플리케이션의 흐름을 누가 쥐고 있느냐에 달려있다. 프레임워크는 전체적인 흐름을 스스로가 쥐고 있으며 사용자는 그 안에서 필요한 코드를 짜 넣는다. 라이브러리는 사용자가 전체적인 흐름을 만들며 라이브러리를 가져다 쓰는 것이라고 할 수 있다. 다시 말해, 라이브러리는 라이브러리를 가져다가 사용하고 호출하는 측에 전적으로 주도성이 있으며 프레임워크는 그 틀안에 이미 제어 흐름에 대한 주도성이 내재하고 있다.

React vs Vue vs Angular

  • React

    • 페이스북이라는 거대한 기업의 지원
    • 가장 거대한 커뮤니티
    • Virtual DOM
    • 웹 뿐만 아니라 앱 개발도 가능 (React Native)
  • Vue

    • 가볍고 빠르게 개발이 필요하다면 추천
    • Evan You 라는 개인이 프로젝트 리더
    • 상대적으로 작지만 빠르게 성장중인 커뮤니티
    • 가장 최신에 릴리즈 시작한 프레임워크(2014년)
    • 양방향 바인딩
    • Virtyal Dom
    • 가장 낮은 러닝커브
  • Angular

    • 가장 빠르게 릴리즈된 JS프레임워크(2010년)
    • 구글의 지원
    • 큰 커뮤니티
    • TypeScript 가장 먼저 도입
    • 가장 체계적이고 잘 정리되어있는 문서
    • 가장 복잡하고 큰 러닝커브( 내부 동작 메커니즘 등 포함 )

2. CRA

  • Create - React - App의 줄임말
  • React를 사용하기 위한 툴
  • React로 바로 개발을 할 수 있는 환경을 조성해준다.
  • React를 처음 접할 때 사용하면 좋다.

CRA 사용 과정

3. node.js & npm

  • JavaScript는 기본적으로 웹 브라우저 안에서 활동하는 언어이다.
  • 이런 JS를 웹 브라우저 밖에서도 사용할 수 있게 만들어준다.

4. Component

5. State

6. setState

7. Props

8. eventHandle

profile
블로그 운영 x

0개의 댓글