로그인하고 있지 않습니다. 편집하면 당신의 IP 주소가 공개적으로 기록됩니다. 계정을 만들고 로그인하면 편집 시 사용자 이름만 보이며, 위키 이용에 여러 가지 편의가 주어집니다.스팸 방지 검사입니다. 이것을 입력하지 마세요!== 특징 == === npm === [[파일:Npm-logo.svg|섬네일|208x208px|npm의 로고|대체글=|없음]] [[npm]]이라는 강력한 패키지 매니저가 있다. python의 pip나 PHP의 Composer(컴포저), 자바의 Maven나 C#의 [[NuGet]] 정도의 포지션이다. npm을 이용해 내가 작성한 코드들을 패키지로 만들거나 의존성 라이브러리를 설정할 수 있다. nodejs 개발 환경을 세팅하기 위해서는 npm으로 node 패키지를 설치해야 한다.<ref>이 때 설치하는 것은 node 런타임이 아니다.</ref> 만약에 타입스크립트로 개발을 하고 싶다면 타입스크립트 패키지를 설치하면 된다. vscode등과 같은 텍스트 편집기, IDE로 node를 개발할 때 require나 import 함수가 인식되지 않다면 설치해야 한다. <syntaxhighlight lang="console"> npm install node #lts 버전 설치 npm i node@lts </syntaxhighlight> 이렇게 설치하면 현재 환경에만 설치가 되고 -g 옵션을 붙이면 전역으로 설치가 된다. ===비동기성=== Node.js의 가장 큰 특징으로, Node.js는 싱글 스레드 환경에서 동작하며 non-blocking I/O 호출 방식을 사용한다. [[RAM]]의 속도에 비해 하드 디스크나 네트워크 상의 다른 컴퓨터에 접근해 데이터를 가져오는 작업은 속도가 매우 느리다. 이런 작업을 메인 스레드에서 하게 되면 그동안 다른 작업을 처리하지 못해 극도로 비효율적이 된다. 이를 해결하기 위해 다른 서버 플랫폼에서는 요청마다 새 스레드를 생성해처리하는 것이 보통이지만, 이 작업을 프로그래머가 직접 처리하다 보면 여러 실수도 발생하고, 생각처럼 좋은 성능을 내기도 쉽지 않다. 노드는 연산 작업은 항상 메인 스레드에서 처리하도록 되어 있다. 입출력 작업이 필요할 때, 노드에서 제공하는 함수들은 별도의 스레드를 이용해 작업을 처리하게 된다. 입출력 이후의 처리 부분에서 자바스크립트의 일급 함수 개념이 빛난다. 작업이 끝난 뒤 처리를 담당할 함수를 인자로 같이 넘겨줌으로써, 입출력 이후 그 함수가 호출되어 다음 작업을 진행할 수 있게 되는 것. 다만 이는 [[콜백 지옥]]을 발생시킨다는 문제가 지적된다. <syntaxhighlight lang="javascript"> step1(function (value1) { step2(function (value2) { step3(function (value3) { step4(function (value4) { step5(function (value5) { step6(function (value6) { // Do something with value6 }); }); }); }); }); }); </syntaxhighlight> 위와 같이, 콜백 함수가 연속해서 나오면서 들여쓰기의 레벨이 한도 끝도 없이 깊어지는 것. 이를 해결하기 위해 [[Promise]], async-await와 같은 해결방법들이 등장했다. 요약: 리브레 위키에서의 모든 기여는 크리에이티브 커먼즈 저작자표시-동일조건변경허락 3.0 라이선스로 배포됩니다(자세한 내용에 대해서는 리브레 위키:저작권 문서를 읽어주세요). 만약 여기에 동의하지 않는다면 문서를 저장하지 말아 주세요. 글이 직접 작성되었거나 호환되는 라이선스인지 확인해주세요. 리그베다 위키, 나무위키, 오리위키, 구스위키, 디시위키 및 CCL 미적용 사이트 등에서 글을 가져오실 때는 본인이 문서의 유일한 기여자여야 하고, 만약 본인이 문서의 유일한 기여자라는 증거가 없다면 그 문서는 불시에 삭제될 수 있습니다. 취소 편집 도움말 (새 창에서 열림) | () [] [[]] {{}} {{{}}} · <!-- --> · [[분류:]] · [[파일:]] · [[미디어:]] · #넘겨주기 [[]] · {{ㅊ|}} · <onlyinclude></onlyinclude> · <includeonly></includeonly> · <noinclude></noinclude> · <br /> · <ref></ref> · {{각주}} · {|class="wikitable" · |- · rowspan=""| · colspan=""| · |} {{lang|}} · {{llang||}} · {{인용문|}} · {{인용문2|}} · {{유튜브|}} · {{다음팟|}} · {{니코|}} · {{토막글}} {{삭제|}} · {{특정판삭제|}}(이유를 적지 않을 경우 기각될 가능성이 높습니다. 반드시 이유를 적어주세요.) {{#expr:}} · {{#if:}} · {{#ifeq:}} · {{#iferror:}} · {{#ifexist:}} · {{#switch:}} · {{#time:}} · {{#timel:}} · {{#titleparts:}} __NOTOC__ · __FORCETOC__ · __TOC__ · {{PAGENAME}} · {{SITENAME}} · {{localurl:}} · {{fullurl:}} · {{ns:}} –(대시) ‘’(작은따옴표) “”(큰따옴표) ·(가운뎃점) …(말줄임표) ‽(물음느낌표) 〈〉(홑화살괄호) 《》(겹화살괄호) ± − × ÷ ≈ ≠ ∓ ≤ ≥ ∞ ¬ ¹ ² ³ ⁿ ¼ ½ ¾ § € £ ₩ ¥ ¢ † ‡ • ← → ↔ ‰ °C µ(마이크로) Å °(도) ′(분) ″(초) Α α Β β Γ γ Δ δ Ε ε Ζ ζ Η η Θ θ Ι ι Κ κ Λ λ Μ μ(뮤) Ν ν Ξ ξ Ο ο Π π Ρ ρ Σ σ ς Τ τ Υ υ Φ φ Χ χ Ψ ψ Ω ω · Ά ά Έ έ Ή ή Ί ί Ό ό Ύ ύ Ώ ώ · Ϊ ϊ Ϋ ϋ · ΐ ΰ Æ æ Đ(D with stroke) đ Ð(eth) ð ı Ł ł Ø ø Œ œ ß Þ þ · Á á Ć ć É é Í í Ĺ ĺ Ḿ ḿ Ń ń Ó ó Ŕ ŕ Ś ś Ú ú Ý ý Ź ź · À à È è Ì ì Ǹ ǹ Ò ò Ù ù · İ Ż ż ·  â Ĉ ĉ Ê ê Ĝ ĝ Ĥ ĥ Î î Ĵ ĵ Ô ô Ŝ ŝ Û û · Ä ä Ë ë Ï ï Ö ö Ü ü Ÿ ÿ · ǘ ǜ ǚ ǖ · caron/háček: Ǎ ǎ Č č Ď ď Ě ě Ǐ ǐ Ľ ľ Ň ň Ǒ ǒ Ř ř Š š Ť ť Ǔ ǔ Ž ž · breve: Ă ă Ğ ğ Ŏ ŏ Ŭ ŭ · Ā ā Ē ē Ī ī Ō ō Ū ū · à ã Ñ ñ Õ õ · Å å Ů ů · Ą ą Ę ę · Ç ç Ş ş Ţ ţ · Ő ő Ű ű · Ș ș Ț ț