React를 공부하다보니깐

compoent의 종류가 두가지가 있었다

Functional compoent와 class component

 

두개의 차이점이 궁금해졌다

 

그래서 알아보고자한다 

 

사실 create-react-app 으로 프로젝트 생성할때 이전에는 class component로

생성 되었던거 같은데 이번엔 functional component로 생성되길래 

오잉또잉??ㅇㅅㅇ???

해서 찾아보게 된것이다,,,

 

후후 이글은 사실

https://medium.com/@Zwenza/functional-vs-class-components-in-react-231e3fbd7108

 

다음글을 거의 해석한것과 다름없다.

 

그럼 시작해보자 꼬고!

 

 


 

1. Functional Component VS Class Component

 

Functional Component : 그냥 Plain javascipt 

function Welcome(props) {
	return <h1>Hello, {props.name}</h1>;
}

 

Class Component

class Welcome extends React.Component {
  render() {
		return <h1>Hello, {this.props.name}</h1>;
	}
}

 

 

2. 차이점 (1) Syntax

Functinal Component Class Component
javascript function extends React

plain javascript 문법을 사용하여 props를 받아들이고 

React element return

render() 사용하여 React element return

 

 

3. 차이점 (2) State

*** React 16.8에 Hooks가 업데이트 되었다.

Functional 에서도 useState로 state를 사용 할 수 있다.

 

 

functional Component에서는 state를 쓸 수 없다. 당연히 setState를 못쓴다.

그렇기 때문에 이전에는 functional Stateless components라고도 불렀다.

 

그래서,,

state를 쓰고 싶으면 Class Component를 써야한다.

 

아니면!

Parent Component로 state를 올려서 functional component에게 props로 내려주어야한다.

 

 

 

3. 차이점 (3) Lifecycle Hooks

*** React 16.8에 Hooks가 업데이트 되었다.

Functional 에서도 useEffet를 사용 할 수 있다.

 

Functional Component에서 lifecycle hokks를 사용하지 못한다. 

state를 사용 못하는 이유와 같은데, Lifecycle hooks는 React에서부터 온 것이기 때문이다.

 

그래서,,

Lifecycle Hooks를 사용 하려면 Class Compnent를 사용해야 한다.

 

 

 

 

4. 그렇다면,,, Functional Component를 왜써???????ㅇㅅㅇ?

 

1. Functional Component는 훨씬 더 쉽게 읽고 테스트 할 수 있다.

  state도 없고, lifecycle도 없이 그냥 javascript 문법이기 때문이다.

2. 코드가 더 적다

3. 코드가 더 간단

4. React Team에서 functional Component 성능을 더 좋아지게 할거랬어,,

 

 

5. 결론

그렇다면,,,

어떻게 사용하는 것이 좋을까?

state 와 lifecycle hooks를 사용할거면 당연히  Class Component를 사용 

사용하지 않는 다면~ Functional Component를 사용 하면 된다.

 

ㅎㅎ; 왜알아본거지

그냥 Functional Component 쓸걸~~ㅎㅎ

 

뭐 자세히 알아보았다 ^_^ㅎㅎ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Angular

React

Vue

출시

2010년에 Google에서

2013년에 Facebook에서

2014Google직원인 Evan You

 

TypeScript

X

X

DOM

Real DOM

Virtual DOM

Virtual DOM

바인딩

단방향 , 양방향 데이터바인딩

단방향 데이터 바인딩

단방향 , 양방향 데이터바인딩

Template

HTML파일에 마크업을 작성

JSX 기술

HTML파일에 마크업을 작성

Popularity

3.

1.

2.

Usercase

Google, The Guardian , Weather.com

Facebook, Twitter, Whatsapp, Instagram

9Gag, GitLab

develop

Angular CLI

Create React App

Vue CLI

 

저번주에는 개념적인것만 공부했다면 

이번주에는 각각 샘플 프로젝트를 해보며 직접 무엇이 다른지 경험해보았다.

 

 

 

1. Angular

 

다른언어랑 비교 했을때 가장 다른 점은

Typescript 를 사용한다는 점이고, 더 객체 지향적인 관점에서 개발되는거 같다

 

직접 해본 느낌은 자바 MVC 패턴으로 개발하는거랑 정말 크게 다르지 않은 느낌이다..

자바가 javascript로 바뀐정도 느낌이랄까

 

특히 service를 이용해서 구현한부분에서 그렇게 느꼈다.

 

 

 

 

2. React

 

JSX를 이용하여 자바스크립트에서 DOM 생성

state는 불변이라 data를 변경시에 setState()를 이용해서 변경한다.

React Native가 있어 Mobile 앱에서 강점이 있다.

 

다른언어는 html 파일에 마크업방식으로 template을 구성한다면

React는 html 태그에 js 문법도 같이 들어가있는 jsx을 이용한다는게 문법적으로 많이 다르다.

 

그리고 vue.js와 크게 다른건 

뒤에서 얘기하겠지만..

vue.js 는 data를 직접 변경이 가능하지만 React는 불가능하고 setState()라는 function을 이용한다.

 

 

기존에 Vue.js는 해봤어서 

React를 해보니 느낀건 문법적인거 말고는 크게 다른게 없는데..??

부모 자식 컴포넌트 간에 props, emit하는것도 비슷하고 

다 비슷한데??

 

그런데 JSX하는게 가장크게 다르고 

그거에 따라 건드려 줄수 있는게 더 많다고 한다 ㅎㅎ;; 더 해봐야 알겠지만..

 

그리고 Vue.js에 있는 개념과 비슷하게

 shouldComponentUpdate() 이런 function이 있는데 이부분은 더 공부 해봐야겠다..

 

 

3. Vue.js

 

한 컴포넌트에 template, script, style 이 모두 들어가 있다.

그리고 앞에서 얘기한거처럼 data를 직접 변경 가능하고

랜더링이 빠르다.

 

확실히 Vue가 더 가볍고 쉬운건 확실히 맞는거 같다

 

Vue를 먼저 배워서 그런지 그이후 파생되는 React도 조그만 보면 알 수 있을거 같다

Angular는 내 느낌상 자바 객체지향 개념이 있다보니

또 이것 또한 아는 부분이라

금방 할 수 있을거 같긴한데 

 

 

결론

개발자의 숙련도에 따라 결정한다.

 

초급 개발자 위주이면 Vue.js

중급 개발자 이상이 대다수이면 React

- ThirdParty Library를 잘 조합할 수 있다면 React 그런것이 번거롭다면 Angular

Angular : 프로젝트 규모가 크고 타입스크립트를 선호

-유지보수가 좋다. MVC패턴

-

React : 거대한 생태계와 유연성을 선호 , Native 앱에서 사용가능

-Popularity

Vue.js : 쉽고 가벼운 프레임워크

 

Front end Framework 3개중 고민하는 사람이 많을 것으로 생각한다.

예전에는 Angular가 대세였지만 요새는 React와 Vue 중에서 고민을 하는거같다

 

그래서 세개를 다양한 관점에서 비교해 봤다.

해당 사이트를 요약해서 표로 만들어 봤다 

(https://hackernoon.com/angular-vs-react-vs-vue-which-is-the-best-choice-for-2019-16ce0deb3847)

 

 

  Angular React Vue
Popularity 3. 1. 2.
Introduction to the background Released in 2010
by Google
Released in 2013
by Facebook
Released in 2014 by Evan you who is an ex-engineer
of Google
Performance Uses real DOM Uses virtual DOM Uses virtual DOM
Use Cases Google, The Guardian , Weather.com Facebook, Twitter, Whatsapp, Instagram 9Gag, GitLab
Framework size Heavyweight application Suitable for light-weight application The lightest
Learning curve 3. need to learn typescript 1?? 2??
Flexibility Offers you need
but not much flexible
The most flexible Not much opinionated
or flexible
Component based Yes Yes Yes

 

 

결론은,

Vue and React offers better performance and flexibility than Angular.

Vue and react are more suited for light-weight applications and angular is the best for large UI applications.

Angular is highly opinionated and unlike Vue and React, it offers everything
from routing, templates to testing utilities in its package.

Vue is the most popular, loved and growing framework of Javascript.

 

 

개인적인 의견을 붙여보자면,

저는 vue만 해봤는데 ..

해당 사이트에서는 react가 learning curve가 제일 낮다고 했지만 내 생각엔 vue가 제일 낮은거 같다

react를 안해봤지만 vue를 상당히 쉽게 배웠기 때문이다

 

react를 해보고 다시 리뷰해보자 ㅎㅎ '-'

react는 React Native가 있어 모바일앱을 구현하기 좋아서 모바일을 커버하고 싶다면 

react를 선택하는것도 좋을거 같다

 

 

그럼이만

 

 

+ Recent posts