ReactJS 와 VueJS 에 대한 주관적인 비교
VueJS 와 ReactJS 사용성
많은 블로그들에서 이미 VueJS 와 ReactJS 에 대해서 성능까지 측정하며 비교를 자세히 한게 많아서 사실 그러한 부분에 대해서는 굳이 적지 않는다. 혹시나 성능 관련해서 궁금하신 분은 다른 블로그를 보는 것을 추천한다. 다른 블로그들에서 굉장히 잘 설명하고 있다 :D
필자는 전 직장에서는 VueJS 를 이용하여 프론트 개발을 하였고, 현 직장에서는 React 를 이용해서 개발을 진행하고 있다. 요즘 핫한 두가지의 프레임워크를 사용하면서 개발자로서 느낀 굉장히 주관적인 리뷰를 작성해볼까 한다.
먼저 VueJS 의 장점으로는 기본적으로 개인적으로 굉장히 쉽다는 점이 있다. 일단 Vue 같은 경우는 Reactive programming 을 기반으로 코드를 작성하기 때문에 React 에서처럼 Call by reference 에 대한 개념이 크게 있지 않더라도 개발을 하는데 무리는 없다. Call by value 와 Call by reference 에 대해서 잘 모르시는 분은 여기 에서 확인할 수 있다.
이것에 대한 차이점은 크게 데이터를 헨들링할 때 알 수 있다. 아래의 예제는 Array 타입의 데이터를 헨들링 하는 코드이다.
만약 Array 타입의 데이터에 값을 추가하는 경우, Vue 를 이용할 때는 아래와 같이 array 의 내장 메소드인 push 메소드를 이용하면 쉽게 추가할 수 있다.
하지만 React 의 경우에는 기존의 배열의 깊은 복사를 이용하여 setState 에서 값을 변경 해주어야 한다.
두번째는 가독성에 있다. 두번째 이유에 대해서는 주관적인 의견이기 때문에 보는 사람의 입장에 따라 다를 수도 있다. 일단 Vue 컴포넌트의 가장 큰 특징으로는 SFC(Single File Component) 라는 점이다. SFC는 하나의 파일 안에 DOM, Script, Style 을 포함하고 있다는 특징이 있다.
하지만 반대로 React 의 경우는 다음과 같다.
만약 필자와 같이 마크업에 익숙해져있는 경우에는 Vue 의 형태가 눈에 잘 들어올 수 있다는 것을 확연히 알 수 있다.
그리고 세번째의 특징으로는 Vue 의 경우에는 개발자로 하여금 코딩을 하는 데에 집중을 할 수 있도록 많은 것을 지원해주는 프레임워크이다. 이게 무슨 말이냐 하면 Vue 로 개발을 하면서 성능 개선에 대해서 React 만큼 고민을 하지 않아도 비지니스를 진행하는데는 큰 무리가 없다. 반대로 React 의 경우 사실 굉장히 개발자로 하여금 많은 고민을 하게 만든다. 많은 React 에 대한 글을 보면 React 의 경우 불필요한 Render 함수가 호출될 경우를 대비해서 shouldComponentUpdate
훅을 잘 이용을 해야 한다. Vue 를 이용해서 개발을 했던 개발자라면 왜 굳이 이걸 자체적으로 지원해주지 않지? 라고 생각할 법하다.
쓰다보니 굉장히 Vue 찬양적인 글로 바뀌었지만, 사실 React 를 한지 얼마 안되었지만 Vue 보다 React 에 대해 더한 매력을 느끼고 있다. Vue 를 사용하며 느낀 점은 양날의 칼이라는 느낌이 들었다. Vue 자체적으로 많은 것을 지원해주는 것이 장점이지만 반대로는 코드만 치는 바보가 되가는 느낌을 느꼈다. 하지만 React 에는 그러한 Low level 까지 개발자 스스로 고민할 수 있도록 만들어주는 장점이 있다. 오히려 React 로 개발을 하면서 잠시 잊고 있던 Javascript 언어 자체에 대한 공부를 하게 되었달까.. 다시 주니어 개발자로 하여금 초심으로 돌아갈 수 있는 계기가 되었다.
종종 커뮤니티들에 Vue 와 React 중 어떠한 것을 선택을 해서 개발을 하는 게 좋겠냐라는 질문이 올라온다. 물론 비지니스의 특성에 따라서일수도 있겠지만, 개인적으로는 프로젝트를 진행할 작업자들의 역량에 따라 선택을 하는 것이 좋지 않을까 라는 생각이 든다. Vue 의 경우 Javascript 언어 자체에 대한 깊은 이해가 없더라도 개발을 하는데 전혀 방해가 되지 않는다. 이게 Vue 의 가장 큰 장점인 진입 장벽이 낮다
라는 점이다. 또한 학습을 하기 좋게 공식 문서가 한글화되어 굉장히 잘 되어 있다. 물론 이것은 고마운 한국의 여러 개발자들이 번역을 해주었기에 가능한 일이다.
반대로 작업자들이 Javascript 에 대한 지식이 있다면 React 를 이용하는 것이 훨씬 좋은 퍼포먼스를 내지 않을까 싶다. React 가 역시 Facebook 이라는 비지니스를 하는 IT 기업에서 만들어서 그런지 개인적으로는 비지니스를 진행하기에 굉장히 탄탄한 라이브러리 라는 생각이 든다. 필자에게는 React 가 익숙하지 않아서 그런지 쉽지 않다. 다만 그에 따라 많은 레퍼런스를 찾기가 쉽고 같은 고민을 하는 개발자가 스택오버플로우에 많아, 문제 해결을 하는데 도움이 된다. 프레임워크를 선택함에 있어서 얼마나 많은 레퍼런스가 있는지 또한 무시할 수 없을 정도로 중요한 일이다.
Vue 에 대한 트렌드나 사용성이 점점 많아진다는 글을 이미 글로 많이 읽었지만, 사실 이직을 하기 전이나 이직을 한 후를 전후로 느끼는 점으로는 아직도 많은 회사에서 React 를 사용하고 있으며 앞으로도 React 를 많이 사용하지 않을까라는 생각이 든다. 이미 엔터프라이즈급에서는 React 를 많이 사용을 하고 있으며, 문제가 있지 않으면 굳이 리스크를 안고 프레임워크를 변경할 이유가 없다고 생각한다. 그리고 무엇보다는 Vue 개발자 시장이 아직은 넓지 않다. 주변에서도 Vue 를 이용해서 큰 프로젝트를 진행하는 경우를 보는 것이 흔치는 않다. 주변 프론트 엔드 개발자를 봐도 React 를 이용하여 개발을 하는 사람들의 수가 월등히 많은 것은 사실이다.
아직은 React 보다는 Vue 가 익숙해서인지 React 는 필자에게 쉽지 않다. 다만 React 로 개발을 하면서 깊게 고민을 할 수 있다는 점에서는 많은 보람을 느낄 수 있다. 고로 결론을 내려보자면 Vue 는 가볍게 토이 프로젝트로 개발 혹은 작은 단위의 프로젝트를 함에 있어서는 굉장히 스트레스 받지 않고 개발을 할 수 있는 아주 좋지만, 큰 프로젝트를 진행함에 있어서는 React 로 개발하는 것이 훨씬 더 체계적으로 개발할 수 있지 않을까 하는 굉장히 주관적인 견해이다.
이 글은 굉장히 주관적인 견해이기 때문에 참고만 하되 만약 지금 회사에 프레임워크를 도입하려고 한다면 많은 요인을 고려해서 고민한 후 신중하게 선택하는 것을 추천한다.