오늘의 면접 질문은.. “리액트를 사용하는 이유에 대해 설명해주세요.” 다.
리액트를 사용하는 이유 중에 가장 큰 건 컴포넌트 단위로 UI를 관리할 수 있고 효율적으로 UI 업데이트가 가능하기 때문이 아닐까 생각한다.
현재 내가 리액트를 접한지 3 ~ 4개월 가량이 되어가고 있다.
지금은 아무래도 처음보다는 리액트를 왜 사용해야 되는지에 대한 이유를 좀 더 내 경험을 살려서 이야기할 수 있게 되었다고 생각한다.
리액트는 기존에 바닐라로 진행했던 프로젝트에 비하면 아무래도 좀 더 간편하게 코드를 구현하고 기능도 컴포넌트 단위로 구현해서 재사용하기도 쉽고 자바스크립트 파일에 로직을 길게 작성하던 것에 비하면 가독성도 훨씬 좋다.
그리고 라우팅도 너무 편하다. 실제 바닐라로 history 객체를 사용해서 라우팅을 구현하고 활용해보는 부분을 진행해보았지만 리액트로 처리하는 라우팅은 자바스크립트로 처리하는 복잡한 라우팅 과정을 리액트 라우터를 통해 대신 처리해주기 때문에 너무나 편리했다.
근데 이런 편리한 리액트 같은 라이브러리가 있는데 왜 자바스크립트를 깊게 공부해야 한다고 하는 걸까? 그냥 리액트를 사용할 수 있을 정도만 알면 되는 거 아닌가? 왜 나보다 경력이 많은 주변 지인들도 자바스크립트가 중요하다고 생각해서 따로 시간을 할애해서 공부해야 한다고 많이들 이야기하는 걸까? 그동안은 이처럼 그냥 단순히 주변에서 자바스크립트를 깊게 알아야 되고 그래야 리액트도 잘할 수 있고 다른 어떤 라이브러리가 나와도 쉽게 적응할 수 있다고 해서 그걸 그대로 받아들여왔다. 하지만 실용주의 프로그래밍을 생각하자면 최대한 이런 편리한 라이브러리나 프레임워크를 사용해서 고객이 원하는 부분을 최대한 빠르게 만족시켜주기만 한다면 자바스크립트를 굳이 깊게 알 필요가 있을까? 어느 정도 이런 라이브러리들을 제대로 활용하고 유지보수하는데 불편함이 없을 정도만 알고 있으면 되는 거 아니야? 라는 생각도 든다.
이 부분에 대한 나만의 답을 지금 당장 하기는 힘들다. 하지만 뭐든지 기초가 탄탄해야 하기 때문에 비록 지루하고 재미없고 아직 깊게 공부해야 한다는 부분에서 납득이 가지 않지만 조금씩 자바스크립트 공부를 꾸준히 해나갈 생각이다. 단, 자바스크립트를 깊게 공부해야 하는 이유에 대해서는 나만의 답을 반드시 찾아보려고 한다.
오늘의 공부로 내가 이해한 의존성 역전은 한 곳에 의존성이 너무 몰리면 안되니까 기능 단위로 최대한 쪼개서 추상화함으로써 의존성을 분산시킨다는 의미로 받아들였다.
결국 이것도 하나의 함수는 하나의 행동만 처리하는 것과 관련이 있는 거 아닐까? 함수 내지 컴포넌트에서 여러개의 의존성을 가지고 있으면 유연성도 떨어지고 확장하려고 해도 힘들테니까 유지보수도 당연히 더 힘들어지게 될 것 같다.
큰 프로젝트를 진행한다고 하면 아무래도 뭔가 기능하나 추가하려고 해도 전체 프로젝트를 다시 뒤집어야 될 수도 있는 상황이 생길 것 같다.
그래서 이번에 TodoApp 만들면서 멘토님 피드백으로 API를 클래스로 추상화하고 이 부분과 연관있는 원티드 강의를 보면서 느낀건, 컴포넌트 간에 의존성이 너무 심하지 않도록 주의해서 코드를 작성해야 한다는 부분이다.
생활코딩 강의를 들었다.
리액트에서 리덕스를 사용하는 강의가 아니라 자바스크립트 환경에서 사용하는 리덕스 라이브러리에 대한 강의다. 즉, 리덕스는 리액트 환경에서만 사용가능한 것이 아니라 어디서든 사용가능하다. state를 관리하는 store가 있다. store에서는 reducer를 이용해서 state와 action을 통해 새로운 state를 생성해서 state를 다시 조회하거나 변경할 수 있다.
오늘은 강의를 가볍게 들었기 때문에 대강 이렇게 이해했는데, 아직 명확하게 이해하지 못한 것 같으니 Redux에 대해서 좀 더 공부해본 다음에 다시 한 번 정의를 내려보도록 하자.