본문 바로가기

Dev/Nodejs4

Node.js 와 이벤트 루프 노드의 정의 Node.js 는 Chrome v8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이라고 정의됩니다. 이때 런타임이란 특정 언어의 실행기로, 특정 언어로 만든 프로그램들을 실행할 수 있는 환경입니다. 노드의 기반이 되는 라이브러리는 V8과 libuv이며, 이벤트루프는 libuv의 특징 중 하나인 이벤트 기반과 연결됩니다. 이벤트 기반 이벤트 기반이란 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식을 말합니다. 발생한 이벤트를 처리해서 이벤트가 없는 상황에서는 다음 이벤트 발생까지 대기하고, 새롭게 발생한 이벤트를 처리합니다. 이벤트 루프 실행될 이벤트, 즉 콜백함수들을 어떤 순서로 호출할지 관리하는 개념입니다. 호출스택(call stack)에 실행할 함수의 실행컨텍스트를 쌓습니다. 코.. 2024. 4. 3.
NPM (Node Package Manager)의 이해 1. NPM이란? Node.js 기반의 패키지를 관리하는 도구(설치 및 버전관리) 다른 개발자들이 만든 모듈을 의미하는 3rd-party module의 소스 코드들이 모아져 있는 저장소(npm registry), 웹 사이트(website), 그리고 npm CLI를 통칭해서 NPM이라고 함 모듈의 구분 Built-in module Node.js가 설치되면서 기본으로 내장되어 있는 모듈 Custom module Node.js CommonJS 방식으로 만들 모듈 3rd-party module 다른 개발자들이 만들어 놓은 모듈 2. package.json 프로젝트에 대한 메타 정보와 프로젝트에서 사용중인 npm 패키지에 대한 정보를 담은 파일 프로젝트 초기 세팅 시 package.json부터 만들고 시작 npm.. 2022. 8. 7.
Node.js 모듈 시스템 및 동기/비동기 1. Node.js module system Module System 모듈화 조건 자신만의 독립적인 실행영역 전역변수(Global variable)와 지역변수(Local variable)를 분리하는 것 JS는 파일마다 독립적인 파일 스코프가 있기 때문에 파일 하나에 모듈 하나를 작성하는 방법으로 독립적인 실행 영역 확보 모듈을 외부에서 사용할 수 있도록 공개 Node.js (CommonJS의 모듈 명세를 따르는)는 exports라는 전역 객체를 이용해서 정의합니다. 모듈 불러오기 모듈을 사용하는 영역에서는 require() 함수를 이용해서 모듈을 불러옵니다. module.exports를 사용하여 module 만들기 module.exports : 파일 내 정의된 함수 외부 공개 require : 공개한 모.. 2022. 8. 7.
Node.js의 이해 Node.js란? Chrome 브라우저의 V8 Javascript 엔진을 탑재한, 브라우저에서 독립되어 실행 가능한 Server Side 오픈소스 Javascript Runtime입니다. Javascript 브라우저(Chrome, Safari, Internet Exploere)에서 HTML 요소 생성부터 모든 페이지 및 기능을 동적으로 처리할 수 있도록 만들어주는 브라우저에서 실행되는 프로그래밍 언어 V8 Javascript 엔진 2008년, Google이 주도하여 C++로 개발 Javascript 언어로 작성된 코드를 컴퓨터가 해석하기 쉬운 바이트 코드로 변환하는 JIT컴파일 방식을 통해 속도 및 고성능 확보 Server Side API 서버(HTTP 서버) 구축에 활용 수많은 요청을 이벤트 기반으로 .. 2022. 8. 7.