특히 많은 양의 파일 I / O를 처리하는 데 강력하며 많은 네트워크 통신도 잘 처리 할 것으로 기대합니다. 소켓 중심 앱에 특히 인기가있는 것 같습니다. 명심해야 할 중요한 점은 기존 라이브러리에서 요구 사항을 충족하지 못하면 (많은 경우가 있음) JS 명령에 바인딩 될 수있는 일부 C로 다이빙해야 할 수도 있다는 것입니다. 추가 노드 프로세스를 생성 할 수도 있지만 많은 양의 작업을 수행하면 세금이 부과 될 수 있습니다 (잘못된 것으로 가정합니다. 각각에 대해 V8 인스턴스가 생성되었습니다).
JS는 단일 스레드 및 차단이므로 함수 호출이 완료 될 때까지 다른 것을 실행할 수 없습니다. 이것은 JS의 원하는 기능으로 본질적으로 모든 스레드 및 대기열 문제를 해결합니다. JS는 C / C ++ 항목이 더 많은 멀티 스레드 방식으로 실행되는 것을 막지 않으므로 JS의 역할은 실제로 더 많은 아키텍처 / 메신저입니다. 이미지 처리를 수행하는 경우 앱 또는 서버의 다른 모든 항목이 완료 될 때까지 차단되므로 동기식 JavaScript 명령으로 처리하지 않을 것입니다. 아이디어는 바인딩 된 C / C ++ 기능으로 이미지를 처리 한 다음 이미지 처리가 완료되면 '완료'이벤트에 응답한다는 것입니다.
이를 위해서는 모든 Node.js 앱의 JS가 많은 이벤트와 콜백을 유발해야합니다. 그렇지 않으면 성능이 매우 저하 될 수 있습니다. 따라서 나중에 사용하기 위해 함수를 전달하지 않는 많은 메소드 호출이 Node에 표시되지 않습니다. 노드에서 매우 빠르게 밝혀지는 것은 콜백 피라미드를 처리 할 방법을 찾지 못하면 못생긴 세상에 있다는 것입니다. 예 :
//event CBs are more DOM-style than Node style and this isn't built-in Node file I/O
//keeping it simple and quick since I'll just get Node stuff wrong from memory
file.get('someFile.txt', function(e){
e.fileObj.find('some snippet', function(e){
someFinalCallBackHandler( e.snippetLocations );
} );
} );
다행히도이를보다 잘 처리하기위한 도구와 예제가 많이 있습니다. 대부분은 약속 메커니즘을 중심으로 돌아가며 서로의 콜백 상태에 응답하기위한 일련의 함수를 단순히 체인으로 연결하는 경향이 있습니다.
개인적으로, 나는 우리가 JS를 높은 수준으로, C / C ++를 크롬에 더 가깝게 만드는 것을 좋아합니다. 그것은 궁극적 인 콤보이며 C를 배우기 시작하도록 영감을주었습니다. 라이브러리 잠재력이 부족하여 연구를 마칠 때까지 당신을 놀라게하지 마십시오. 노드 라이브러리는 매우 빠른 속도로 생산되고 있으며 매우 빠르게 성숙하고 있습니다. 당신이 매우 특이한 확률을하지 않으면 누군가가 그것을 커버 좋은 것입니다.
Rails와의 가장 큰 차이점은 JS가 그대로 레일에있을 가능성이 없다는 것입니다. 우리는 그것을 가질 수 있도록 코딩하는 경향이 있지만 매우 빠르게 원하기 때문에 요소에 매달릴 수있는 밧줄이 있으며 아키텍처는 최근 몇 년 전까지 JS에서 꽤 DIY였습니다. 나는 그 자유를 부르지 만, 그것은 많은 개발자들에게 이상적이지 않다는 것을 알고 있습니다.
또한 Mac 이외의 다른 버전에 설치하려고했기 때문에 Node.js에서 "gem"문제가 발생하지 않습니다. 클라이언트 측 웹은 종속성 문제를 경멸하며 많은 노드 코어가 시작됩니다. 모든 인기있는 플랫폼에서 5 분 이내에 즉시 작동하지 않으면 일반적으로 그것을 구부려 버립니다. 나는 인기있는 모듈을 아직 실행하지 않았으므로 작동하도록 특별한 작업을 수행해야했습니다. 패키지 시스템이 우수합니다.
그러나 핵심 질문에보다 명확하고 간결하게 대답하려면 백그라운드 프로세스에 적합합니까?
예, 노드는 기본적으로 이벤트 및 콜백을 통해 앱을 구동하는 수단으로 백그라운드 프로세스입니다.