Lodash와 Underscore는 모두 자바스크립트 개발을 더 쉽고 편리하게 만들어주는 대표적인 유틸리티 라이브러리입니다. 두 라이브러리는 배열, 숫자, 객체, 문자열 등을 다루는 작업을 훨씬 간결하고 효율적으로 처리할 수 있도록 다양한 유틸리티 함수를 제공합니다.
이러한 라이브러리는 특히 다음과 같은 작업에 유용합니다.
배열, 객체, 문자열의 반복(iteration) 처리
값 조작 및 검증
복합 함수(composite function) 생성
공통점: 함수형 유틸리티 라이브러리
두 라이브러리 모두 함수형 프로그래밍 스타일을 기반으로 한 유틸리티 라이브러리라는 공통점이 있습니다. 흥미로운 점은 Lodash(Lo-Dash)가 Underscore를 포크(fork)하여 만들어진 프로젝트라는 것입니다. Lodash는 Underscore의 API를 충분히 준수하기 때문에, 기존 Underscore 기반 코드에서 별도의 수정 없이 그대로 교체(drop-in replacement)해서 사용할 수 있습니다.
하지만 겉모습만 같을 뿐, 내부 구현은 완전히 새롭게 작성되었습니다. 또한 Underscore에는 없는 다양한 기능과 함수들이 추가되어 있습니다.
Lodash가 만들어진 이유
Lodash는 처음에 배열, 문자열, 객체, arguments 객체에 대해 실행 환경에 관계없이 일관된 반복 처리(cross-environment iteration)를 지원하기 위해 만들어졌습니다. 이후 Underscore의 상위 집합(superset)으로 발전하면서 다음과 같은 장점을 갖추게 되었습니다.
추가 기능: AMD 모듈 지원, 깊은 복사(deep clone), 깊은 병합(deep merge) 등 Underscore에 없는 기능 제공
성능 최적화: 대용량 배열·객체 반복 처리 시 더 나은 전반적인 성능
유연성: 커스텀 빌드(custom build)와 템플릿 사전 컴파일(template pre-compilation) 유틸리티 지원
정리하면, Lodash는 Underscore와 호환되면서도 더 많은 기능과 뛰어난 성능, 그리고 유연한 활용성을 원하는 개발자에게 적합한 선택지라고 할 수 있습니다.