[Node.js] 범용 유틸리티 라이브러리: underscore
underscore는 이런저런 편리한 유틸 함수들을 제공하는 라이브러리다.
노드가 탄생한 연도인 2009년에 나왔다.
다양한 컬렉션 처리 함수들이나

배열 처리 함수

잡다한 유틸리티 등이 제공된다.

이중에서 몇가지만 골라 써보도록 하겠다.
먼저 설치를 한다.

컬렉션 순회: each
배열 등의 순회 가능한 컬렉션을 받고, 두번째 인자로 각 순회작업에서 수행할 함수를 받는다.
사실 자바스크립트의 기본 메소드인 forEach와 큰 차이는 없다.


이외에도 기본 라이브러리에 존재하는 map, reduce, filter, find 등등이 구현되어있다.
요소 뒤섞기: shuffle
이건 꽤 쓸만할 것 같다.
컬렉션 내부의 값들을 랜덤하게 섞어준다.


수열 생성: range
range는 연속된 수의 배열을 만들어주는 함수다.
인자를 하나만 줄 경우엔, 0부터 시작하는 N개의 수열을 만든다.


2개면 해당 범위의 수열을 생성한다.


세번째 인자를 추가로 주면 수열의 증가치까지 적용해준다.
아래의 경우엔 2씩 증가하는 수열이 된다.


HTML 이스케이핑: escape&unescape
html 소스에서의 특수문자들을 이스케이핑 처리해주는 함수다.
예를 들면 <나 > 같은 것들 말이다.


난수 생성: random
자바스크립트의 내장 난수생성 함수는 실수형태로 생성을 해주기 때문에 다소 불편한 부분이 있다.
이건 정수형이라 좀더 쓰기 편하다.


고유한 식별자값 생성: uniqueId
프로그램을 짜다 보면, 충돌이 발생하지 않는 고유한 이름 등을 자동으로 생성하게 할 필요가 있다.
uniqueId는 그런 곳에 적합한 함수다.
문자열을 하나 받고, 거기에 순서대로 숫자를 증가시켜가며 붙여준다.


템플릿엔진?: template
특수한 형태의 템플릿 텍스트를 만들어두고, 그때그때 값을 삽입해서 렌더링을 할 때가 있다.
가장 대표적인 용례는.. 웹 서버에서 사용하는 뷰 템플릿이다.
템플릿 html 소스에 구멍을 뚫어놓고, 값에 따라 그때그때 렌더링하는 것이다.
이게 그 기능이다.
<%=%>는 내부의 값을 방출해내고, <%%>는 자바스크립트 코드 구문을 표현한다.
그리고 반환받은 객체 함수를 호출하면서 컨텍스트 오브젝트를 넘기면 렌더링이 수행된다.
ejs와 형식이 같은데, 여기서 그걸 쓴건지, 거기서 이걸 쓴건지는 모르겠다.


<%%>와 <%=%>를 조합하면 반복적인 렌더링도 가능하다.
다소 조잡해지긴 한다만


근데 텍스트에 html 특수문자가 들어갈 경우엔 <%=%> 표현식이 문제가 될 수도 있다
그럴때는 escape가 되는 <%-%>구문을 사용한다.


그렇다.
참조
https://underscorejs.org/
https://github.com/indongyoo/functional-javascript/wiki/3.1-Underscore.js-%EC%86%8C%EA%B0%9C