Node.js 종속성의 무게가 너무 큼


10

최근에 node.js로 게임을 시작했습니다.

이제 모든 노드 튜토리얼은 시작해야한다고 말합니다.

npm init

그런 다음 표준 서버 프레임 워크를 원한다고 명시 적으로 선택하십시오.

npm install express

그러나 ASP.NET과 같은 세계에서 더 많은 것들을 원할 것입니다.

템플릿 엔진 (jade)과 스타일 시트 프리 프로세서 (SASS)에 대해 이야기합니다.

그리고 그들은 "gulp / grunt를 설치합니다! 그래서 서버와 다른 많은 것들을 자동으로 축소하고 실행하고 실행할 수 있습니다!"

그리고 그것은 gulp, node-sass, gulp-sass 및 gulp-uglify를 설치하는 것을 의미하며 아마도 더 멋진 것들 (tsd 또는 babel, markdown 등)을 의미합니다 ...

그러나이 모든 것은 디스크와 프로젝트에 무겁 습니다. 잠깐만 보지 말고 프로젝트에 100MB 이상의 디스크 크기 (아직 시작하지 않은 파일도 있음)를 쉽게 찾을 수 있습니다. 모든 노드 모듈이 동일한 지에 관계없이 10000+ 파일을 언급하지 않아도됩니다. 종속성은 다른 모듈에서 사용됩니다. 그리고 이것은 웹 서버는 물론 어디에서나 이동하기가 매우 어렵습니다.

뭔가 빠졌습니까? 노드 환경에 칭찬이 많지만 명확한 결점이 존재한다고 생각하지 않습니다. 너무 많은 것을 기대합니까 (한 번에 많은 도구를 사용하려고 시도한 후에), 노드 참전 용사에게 이것을 우회하는 사소한 것이 있습니까?


2
전적으로 프론트 엔드 프로젝트를위한 npm 트리를보고 놀랐습니다. 나는 .net 세계에서 당신이 똑같은 것을 가지고 있다고 생각하지만, 그들은 모두 바이너리로 컴파일되어 있으므로 눈치 채지
Ewan

2
불행히도 이것은 실제로 구체적이고 대답하기 어려운 질문이 아니므로 곧 마감 될 것입니다. 내가 말할 수있는 것은 1) 모든 추가 도구가 무언가에 유용하지만 작은 프로젝트는 거의 필요하지 않습니다 .2) 비슷한 기능을 가진 다른 모든 프로그래밍 프레임 워크에는 비슷한 양의 물건이 있습니다 JRE 또는 .NET 다운로드에서) 유일한 차이점은 필요한 것은 "기본"배포의 일부이며 다른 패키지에서 얼마나 많이 찾아야하는지입니다. 3) 개발자 컴퓨터의 100MB는 아무것도 아닙니다
Ixrec

1
@ Ixrec는 물론 대답 할 수 있습니다. 그러나, 나는 당신의 주장을 주장 할 수 있습니다 : 1) 이것은 작은 프로젝트 일 필요는 없습니다-자체 js 파일과 스타일 시트가있는 여러 뷰가있는 프로젝트를 고려하십시오. 그것은 당신이 sass, cssnano 및 uglify를 갖기를 충분하게합니다. 또한 당신이 표현, 비취 그리고 조금 더 원할 정도로 충분합니다. 2) 나는 괜찮은 .net 프로젝트를 가지고 있었지만 그렇게 무겁지 않았습니다 (그리고 파일이 많지 않습니다). 3) 아마도 현대의 개발 기계는 이것을 쉽게 잡을 수 있지만 서버에도 무게가 걸리며 조금 더 관련이 있습니다. 내가 잘못?
또는 Yaniv

2
@OrYaniv 사실, 당신은 내 요점을 증명하고 있습니다. 이것은 토론 할 수있는 문제 이지만 너무 광범위하고 너무 정확하게 수행하고 있기 때문에 정확히 어떤 프로젝트를 수행하고 있는지, 어떤 의존성을 보이는지에 따라 대답 하지 않습니다. 필요한 것. 그건 그렇고, 토론은 채팅에서 완전히 끝납니다 . 또는 Quora에서.
Ixrec

3
node.js의 놀라 울 정도로 부풀린 "전부 또는 전 세계"에 오신 것을 환영합니다. 이는 실제로 이전에 사용했던 것보다 쉽지 않고 좋지 않습니다.
Traubenfuchs

답변:


4

최근 왼쪽 패드 문제는 노드에서 이러한 경향이있는 문제의 주요 예입니다. 너무 많은 것들에 의존 할 때, 모든 것들이 ka-pow로 가고, 프로젝트를 디버그하기 어렵게 만들고, 새로 온 사람에게는 언어의 작동을 이해하기 어렵게 만듭니다.

이제 훌륭한 Node.js 프로그래머는 의존성이 우려되는 최소한의 애플리케이션을 작성하는 것을 알고 있습니다. 의존도가 적을수록 좋습니다. 문자열을 왼쪽으로 채워야합니까? 도우미로 코딩하면 공백이있는 11 줄의 코드입니다. 문자열 행 번호를 지정해야합니까? 코드를 작성하면 100 줄 미만의 코드입니다.

프로젝트 관리와 같은 더 복잡한 작업의 경우에도 프로젝트가 충분히 간단하면서도 Makefiles를 고수하는 것이 좋습니다. 그런트와 꿀꺽 꿀꺽 만드는 작업이 많은 거대한 프로젝트에 실제로 유용합니다. 그러나 당신의 SPA 블로그를 위해? Makefile을 작성하면 5 분이 소요되며 작동 방식 을 알고 있습니다.

3 줄의 코드를 작성할 때마다 npm을 탐색하려는 유혹은 훌륭하지만 합리적 일 때마다 저항해야합니다. 3 개의 DOM 조작이있는 경우 jQuery를 포함하지 말고 정적 프로모션 페이지에 각도를 사용하지 말고 단순한 서버에는 express를 사용하지 마십시오. 하지만 CMS를 코딩하고 있습니까? jQuery, 밑줄 및 그렇지 않은 것과 같은 패키지를 사용하지 않는 것은 미쳐야합니다. 10 개의 콜렉션 유형, 3 개의 db로 작업하고 항상 쿼리합니까? 밑줄과 다른 몇 가지를 사용하지 않는 것은 미친 짓입니다. ' 이 패키지를 설치하여 충분한 시간을 절약 할 수 있습니까?' 라고 생각 하십시오. 또는 '30 분 정도 코딩하면 안되나요? '


2
또 다른 참고 로 문자열에 줄 번호를 추가하려면 실제로 100 줄의 Javascript 코드 가 필요합니까?
로버트 하비

하하하, 나는 현실적인 라인 넘버링 구현을 생각하지 못했습니다.
BorisStoyanovv

당신은 아마 그 의견을 받아들임으로써 그 선을 반으로 줄일 수 있습니다. 실제로 해결해야 할 간단한 문제입니다. (그리고 그것은 체계와 같은 언어에서 하나의 라이너이며 아마도 내가 생각하기에 파이썬 일 것입니다)
Shayne
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.