1-1 Node.js 철학

1-1-1 경량 코어

코어를 최소한의 기능 세트를 가지고 코어의 바깥부분에 유저스페이스(userspace)라고 불리는 사용자 전용 모듈 생태계를 만들었다.

커뮤니티가 사용자 관점에서의 폭 넓은 해결책을 실험해볼 수 있는 자유를 주었다. 즉, 생태계에도 긍정적인 영향을 미쳤다.

1-1-2 경량 모듈

코드의 양 뿐 아니라 범위의 측면에서도 작은 모듈을 디자인하는 것.

패키지 관리자(npm, yarn)의 도움을 받아서 각 패키지가 자신이 필요로 하는 버전의 종속성 패키지들을 갖도록 함으로써 종속성 지옥에서 벗어날 수 있도록 해 준다. 작은 모듈들을 서로 종속적인 관계를 가지도록 설정함으로써 재사용성 측면을 향상시켜 준다.

1-1-3 작은 외부 인터페이스

Node.js 모듈들은 작은 사이즈, 작은 범위, 그리고 최소한의 기능 노출을 장점으로 갖는다. 제한되고 집중화된 기능에만 관심이 있다.

가장 일반적으로 Node.js 모듈을 정의하는 방식은, 단 하나의 함수나 클래스만을 노출시켜서 명백하게 하나의 진입점만을 갖도록 하는 것이다.

Node.js 모듈들은 확장되기 위해서가 아닌 사용되기 위해서 만들어진다.

1-1-4 간결함과 실용주의

완벽하고 모든 기능을 갖춘 소프트웨어보다 단순하고 가벼운 소프트웨어가 더 낫다. 단순한 소프트웨어는 구현을 위해서 필요한 노력이 적고, 가벼워서 빠른 보급이 가능하고, 유지보수가 쉽고 빠른 이해가 가능하다.

Node.js는 자바스크립트를 사용한다. 자바스크립트는 복잡한 객체지향적인 설계보다는 간단한 클래스, 함수, 클로저를 사용하여 실용적으로 문제에 접근한다. 완전하고 완벽한 설계보다 복잡하지 않은 실용적인 접근 방식이 더 선호된다.

1-2 Node.js는 어떻게 작동되는가