jQuery 관련 이야기
jQuery 란?
jQuery란 JavaScript DOM을 다루기 쉽게 도와주는 Library이다.
DOM은 브라우저마다 구조가 다른데,
예전처럼 IE, Chrome, Safari, Opera 등... 브라우저가 다양했던 시기에는
브라우저에 따라 하나하나 처리할 필요 없이 jQuery만 있으면 쉽고 간단하게 DOM을 조작할 수가 있었다.
// CDN 방법
<script src="http://code.jquery.com/jquery-latest.js"></script>
위의 Script문을 html에 삽입해주면 사용 가능하다.
jQuery의 특징
- Element를 쉽게 찾고 조작할 수 있다.
- 거의 모든 웹브라우저에 대응될 정도로 호환성이 뛰어나다.
- Method Chaining 등 짧고 유지관리가 용이한 코드 작성을 지원한다.
이러한 장점들이 있지만 요즘은 jQuery를 사용하지 않고 개발을 진행하려는 움직임이 많이 보인다. 어째서일까?
jQuery를 안쓰게 되는 이유
웹 표준 API의 확장
JavaScript가 발전함에 따라서 jQuery를 사용해야만 했던 편의 기능을 브라우저에서 기본 API로 제공하는 경우가 늘어나고 있다.
단적인 예가 Fetch API인데, 개인적으로는 $.ajax() 이상의 편의성을 제공한다고 생각한다. (콜백지옥이라던가, 콜백지옥이라던가...)
이와 같이 높은 기능성을 갖춘 웹 표준 API가 늘어나면서 jQuery의 필요성이 줄어들게 되었다.웹 브라우저 환경의 변화
대다수의 사람들이 Internet Explorer를 사용하던 예전과 달리 현재는 Chrome이 대세이다.
Chrome을 포함한 현재 잘 쓰이는 브라우저들은 IE와 다르게 더 우수한 렌더링 엔진을 탑재하였고 웹 표준 또한 신속하게 반영하였다.
그 결과 jQuery를 사용하지 않아도 양질의 웹앱의 구현이 가능해졌다.가상 돔(Virtual DOM)을 사용하는 라이브러리의 등장
해당 문제점들에 대한 jQuery의 대응 전략
jQuery는 위와 같은 문제점 때문에 점유율을 잃어가고 있다.
그에 대한 해결방안으로 여러가지 시도를 하고 있는데 4.x 버전을 기준으로는 다음과 같다.
경량화 jQuery는 원래부터 경량화 라이브러리로 알려져있다.
하지만 여기서 멈추지 않고 더욱 더 경량화를 시도하고 있다.IE11 미만 버전의 지원 중단 IE는 11버전만 기술지원이 이루어지고 있다.
10이하의 버전은 지원을 하지 않으면서 10 이하용의 호환 코드들이 모두 제거되었다.시즐(Sizzle)의 내재화 jQuery가 지금의 위치에 도달하는 데는 CSS 선택자 엔진인 Sizzle의 역할이 컸다. 하지만 동일한 역할을 하는 querySelector API가 IE8 이후의 모든 브라우저에서 지원되기 시작하였고 시즐의 필요성이 점차 줄어들었다.
이에 따라 jQuery는 Sizzle을 내재화 하였으며 점진적으로 시즐만의 확장 기능을 제거하고 필수 기능만 지원하는 형태로 수정하고 있다.브라우저 호환 기능 추가 jQuery는 특정 브라우저만 제공하는 기능을 타 브라우저에서도 사용할 수 있도록 하는 브라우저간 호환 기능을 제공하고 있다.
예를 들어 Promise는 IE에서 지원하지 않지만 jQuery의 Deferred를 이용하면 구현이 가능해진다. jQuery 차기 버전은 현재 크롬만 지원하는 기능인 "Trusted Type"을 모든 브라우저에서 사용 가능하도록 할 계획이다.
이를 이용해서 앞으로 엘리먼트 조작 시 신뢰하는 HTML인지 확인이 가능해지는 등 보안이 한층 더 강화될 것으로 예상된다.