jQuery에 의존하지 말아야하는 이유

2022년 07월 05일

작년에 이 회사에 입사하고서 스크립트 쓴거를 봤는데 죄다 jQuery 투성이였다. 심지어 리액트에도 jQuery 투성이였다. 요즘에도 jQuery에만 의존하는 회사가 있다는 거에 놀랐고, 나도 javascript에 대해서 잘 모르는 편이지만 여기는 나보다 더했다. 그래서 꾸준히 순수 javascript의 필요성을 강조하였고, 그 결과가…

나보고 일단 사내 퍼블리셔들 상대로 스터디를 진행하라는 것이었다.
일단 스터디를 왜 해야 하는지부터 올리라고 하여 아래 내가 회사에 올린 글을 공유하고자 한다.

이 글을 시작으로 미흡하게나마 사내에 javascript와 더 나아가서 기회가 된다면 typescript도 진행하고자 한다.


그동안 jQuery를 썼던 이유 중에 대표적으로 3가지를 뽑자면

  1. DOM 컨트롤에 엄청난 생산성을 보여줌. (쉽고, 짧은 코드)
  2. 웹 브라우저들 간의 엄청난 호환성 (크로스 브라우징)
  3. 수많은 레퍼런스들

위 3가지의 강점 덕분에 대표적인 javascript 라이브러리로써 군림해왔고 여전히 많이 쓰고 있으나, 크게 아래의 2가지 이유 때문에 jQuery를 굳이 쓸 필요가 없어졌습니다.

  1. 웹 브라우저 생태계의 발전
    대략 10년 전 까지만 해도, 순수 javascript의 생산성은 끔찍했습니다(IE 호환성). 순수 javascript로 class 하나 붙이는데 여러 줄이 필요했던 반면에, jQuery로는 한 줄이면 가능했으니까요. 그러나 IE가 급속도로 쇠퇴기에 접어들면서 상황은 많이 달라졌습니다. 웹 표준을 이끄는 애플(safari), 구글(chrome), 모질라(firefox)의 웹 브라우저들이 점유율을 90% 넘게 차지하면서 javascript의 급격한 발전이 시작되고 현재 순수 javascript를 쓰더라도 충분한 크로스 브라우징을 할 수 있으며, 생산성도 jQuery 못지않아졌습니다.

  2. Virtual DOM의 등장
    현재 프론트엔드 프레임워크의 대표주자 React, Vue, Angular의 공통점이 있습니다. 바로 Virtual DOM을 사용하는 것인데, 기존에 실제 DOM을 조작하는 방식 대신, 메모리에 Virtual DOM을 구성하여 실제 돔과의 차이점을 비교하고 변경된 부분을 실제 돔에 적용하는 방식입니다. 설명만 들어도 jQuery와 궁합이 좋지 않다는 것을 알 수 있으며, 실제로 개발을 해보면 jQuery를 3rd 파티 라이브러리로써 지원은 하지만, 주 목적이 DOM 컨트롤을 하는 거라서 현재의 프론트엔드 프렘이워크와는 잘 맞지 않습니다.

그 밖에도 용량(트래픽), 최적화 문제가 있지만, 서버 및 클라이언트들의 컴퓨터 성능도 급격하게 발전하여 굳이 이유로 꼽지 않았습니다.

마지막으로 jQuery의 창시자 존 레식의 트윗으로 정리하자면,

Sad this needs to be said but jQuery doesn’t ‘replace’ JS, it papers over the DOM. jQuery’s success is proof of the failings of the DOM API.
(슬프게도 jQuery는 JS를 대체하는 것이 아니며, DOM을 감출뿐이다. jQuery의 성공은 DOM API가 실패했다는 증거이다.)

이처럼, jQuery는 JS의 라이브러리입니다. 하지만 대부분의 개발자가 옛날의 생산성과 호환성만 생각하여, javascript = jQuery라고 생각하며 jQuery에 의존하고 있습니다. 물론 개발하면서 본인이 좋아하고 익숙한 도구를 쓰는 게 좋겠지만, 프로젝트의 환경에 따라서 수용할 수 있는 능력이 있어야 합니다.
그러기 위해서는 jQuery에 의존하지 않고 순수 javascript를 갈고 닦아서 어떤 라이브러리에도 대응할 수 있도록 해야 합니다.

감사합니다.