nodejs
-
javascript(nodejs) 동작원리 (Single thread, Non-Blocking, event-driven, event loop)카테고리 없음 2022. 3. 18. 18:28
**싱글 스레드, Blocking, Nonblocking NodeJS 는 싱글 스레드이다. 싱글 스레드는 프로세스 내에서 하나의 스레드가 하나의 요청만 수행한다. 해당 요청이 수행될 때 다른 요청을 함께 수행할 수 없고, 이를 싱글스레드 블록킹 모델이라고 한다. NodeJS는 싱글스레드 논블록킹 모델로 구성되어 있다. 하나의 스레드로 동작하지만, 비동기 I/O 작업을 통해 요청들을 서로 블록킹하지 않는다. 즉, 동시에 많은 요청들을 비동기로 수행함으로써 싱글스레드이지만 논블록킹이 가능하다. NodeJS 에서는 주요 로직을 처리하는(Javascript) 쓰레드는 하나이다. 하지만 일부 Blocking 작업들은 libluv의 스레드풀에서 수행되기 때문에 엄격하게 말해서 완벽한 싱글스레드 모델은 아니다. **..
-
6. Modules (NestJs)IT/NodeJs 2020. 10. 28. 19:01
1. Module 의 개념 - Module은 @Module() 데코레이터를 사용하는 클래스이다. - @Module 데코레이터는 Nest가 application 구조를 만들 수 있는 metadata를 제공한다. - 각 앱은 적어도 하나의 root 모듈을 가진다. 이 모듈은 Nest가 application graph를 만들때 시작점이 된다. - application graph : Nest가 module과 provider 간의 관계와 의존성을 해결하기 위해 사용하는 내부적 데이터 - 대부분의 application에서는 여러가지 모듈들을 사용하게 되고, 각각은 연관된 capabillity(기능) 에 따라 캡슐화 된다. - @Module() 이 인자로 갖는 객체는 아래와 같다. providers Nest의 inj..
-
5. Provider (NestJs)IT/NodeJs 2020. 10. 28. 15:23
1. Provider란? - NestJS의 기본 클래스들은 Provider로서 다루어진다. - Provider는 @Injectable() 데코레이터를 사용한다. - Provider 의 기본 아이디어는 의존성 주입(Dependancy Injection) 이다. (Java Spring의 Bean DI와 유사) - 즉 객체는 서로 다양한 의존관계를 가질 수 있으며, Provider의 의존성 기능은 NestJS의 런타임에 의해 관리된다. 2. Service - Nest에서 컨트롤러는 HTTP 요청을 처리하고 더 복잡한 작업을 Provider 에게 위임한다. - 복잡한 비즈니스 로직을 처리하는 부분을 Service Layer로 설계한다. - Service Layer의 객체를 Provider로 정의하고, @Inje..
-
4. NestJS 설치 및 실행, 기본구조IT/NodeJs 2020. 10. 28. 11:09
1. NestJS 설치하기 - NestJS는 CLI를 통해서 간단하게 프로젝트 설정이 가능하다. $ npm i -g @nestjs/cli//nestJS 패키지 설치 $ nest new [Project Name]//nestJS 프로젝트 생성 - 위와같이 설치하고 프로젝트를 실행하면 다음과 같은 프로젝트 구조가 만들어 진다. src |- app.controller.ts |- app.module.ts |- app.service.ts |- main.ts 파일 설명 app.controller.ts 싱글 라우트를 가진 간단한 샘플 컨트롤러 app.mudule.ts 어플리케이션의 root module app.service.ts service provider (provider의 개념은 다음장에서 설명) main.ts ..
-
3. NestJsIT/NodeJs 2020. 10. 28. 10:48
1. NestJS 란?? - 효율적이고 확장 가능한 Node.js 서버 어플리케이션을 구축하기 위한 framework 이다. - Nest에서도 Express를 사용하지만, 여러 다른 라이브러리와의 호환성을 제공한다. - Javascript와 MS의 TypeScript를 사용하며, 객체지향, 함수프로그래밍, 기능적 반응 프로그래밍 요소를 모두 결합한다. - 백앤드 서버에서도 NestJS를 사용하여 효과적인 아키텍처를 구현할 수 있다. 2. NestJS의 특징 - TypeScript를 사용함으로서 높은 수준의 코드 자동생성, 코드 탐색과 리팩토리능을 제공한다.(버그발생 빈도 줄어듬) - ORM 연동이 가능하다. - 여러 라이브러리와 호환성을 제공한다. ( Fastify, Socket 등등..) - 즉시 테스..
-
2. Node.js 의 모듈IT/NodeJs 2020. 10. 14. 20:14
1. 모듈 - 모듈 : 특정 기능을 하는 함수나 변수들의 집합. - 파일별로 코드를 모듈화 한다. - exports, require 사용 - ES2015 이후 import, from 사용 가능 const odd = 'odd'; const even = 'even'; module.exports = { odd, even}; const {odd, even} = require('./var'); function checkOddOrEven(num){ if(num%2) { return odd; } return even; } module.exports = checkOddOrEven; const { odd, even} = require('./var'); const checkNumber = require('./func');..
-
1. Node.JS 란?IT/NodeJs 2020. 10. 14. 19:59
1. Node.js 란?? - Javascript Runtime 이다. - Runtime 이란 특정 언어로 만든 프로그램을 실행할 수 있는 환경이다. - 자바스크립트 실행기 라고 봐도 무방하다. - 구글의 V8 엔진으로 인해 script 동작 엔진이 빨라졌고, 그것을 기반으로 오픈소스 코드로 공개되었다. 2. 내부 구조 - V8과 libuv 는 C와 C++로 구현되어 있다. - libuv 라이브러리는 노드의 특성인 이벤트, 논블로킹I/O 모델을 구현하고 있다. 3. 이벤트 기반 - 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식 - 이벤트 기반 시스템에서는 특정 이벤트가 발생할 때 무엇을 할지 미리 등록 해 두어야 한다(event listener, callback) - 이벤트 루프 : 이벤트가 동..