JaveScript

·JaveScript/NodeJS
공유 자원(예: map, array 등)에 대해 비동기 코드가 동시에 접근할 때 동시성 문제가 발생할 수 있습니다.   자바스크립트는 단일 스레드 모델 자바스크립트는 기본적으로 단일 스레드에서 동작합니다. 이는 한 번에 하나의 작업만을 실행할 수 있다는 것을 의미합니다.비동기 작업(예: 파일 읽기, 네트워크 요청 등)은 이벤트 루프를 통해 처리되며, 이러한 작업이 완료되면 콜백 큐에 추가되어 메인 스레드가 사용 가능할 때 실행됩니다. Node.js는 개발자가 스레드 간의 동기화 문제를 걱정할 수 없게 설계가 되어있습니다.이러한 단일 스레드 모델은 여러 비동기 작업이 동시에 공유 자원에 접근할 때 동시성 문제를 일으킬 수 있습니다.예를 들어, 여러 비동기 함수가 동시에 배열에 값을 추가하거나 변경하려고 하..
·JaveScript/jest
jest 사용법  위처럼 함수 호출해서 인수 확인, 반환값 확인, 호출 순서 확인을  할 수 있다.mockImplementation으로 반환값을 지정할 수도 있다. 1. invocationCallOrder: mock 함수가 호출된 순서를 나타내는 배열입니다. - 모든 mock 함수 호출의 순서를 추적합니다.2. mockClear(): mock 함수의 호출 기록, 인수, 반환값, 인스턴스 등을 초기화합니다. - 예: mockFn.mockClear()3. mockReset(): mockClear()와 유사하지만, mock 함수의 초기 구현도 제거합니다. - 예: mockFn.mockReset()4. mockRestore(): mock 함수의 초기 상태로 복원합니다. jest.spyOn()으로 감시한 메서드에..
·JaveScript/NestJS
Guard란? Guard는 쉽게 말해서  인증(Authentication)과 권한 부여(Authorization)를 처리하는 데 사용됩니다.가드와 CanActivate 인터페이스import { Injectable, CanActivate, ExecutionContext } from '@nestjs/common';import { Observable } from 'rxjs';import { AuthService } from './auth.service';@Injectable()export class AuthGuard implements CanActivate { constructor(private readonly authService: AuthService) {} canActivate( context:..
·JaveScript/NestJS
NestJS에서 필터, 미들웨어, 가드, 파이프 등 다양한 기능을 설정할 때, 인스턴스 대신 클래스를 사용하는 것이 더 좋다고 합니다. 1. 인스턴스 대신 클래스를 사용하는 이유메모리 사용량 감소:NestJS는 클래스를 사용하여 인스턴스를 생성할 때, 해당 클래스의 단일 인스턴스를 모듈 전체에서 재사용합니다.인스턴스를 직접 생성하면 각 요청마다 새로운 인스턴스를 생성할 수 있지만, 클래스를 사용하면 싱글톤 패턴에 따라 한 번만 인스턴스화되어 메모리 사용량이 줄어듭니다.성능 최적화:클래스를 통해 생성된 싱글톤 인스턴스는 여러 곳에서 재사용되므로, 인스턴스 생성과 소멸의 오버헤드가 줄어들어 성능이 향상됩니다.일관성 있는 상태 관리:싱글톤 인스턴스를 사용하면 상태를 중앙 집중적으로 관리할 수 있습니다. 이는 ..
·JaveScript/NestJS
미들웨어는 요청과 응답 사이에서 실행되는 함수로, 요청 데이터의 처리, 인증, 로깅, 에러 처리 등 다양한 역할을 수행할 수 있습니다. import { Injectable, NestMiddleware } from '@nestjs/common';import { Request, Response, NextFunction } from 'express';@Injectable()export class LoggerMiddleware implements NestMiddleware { use(req: Request, res: Response, next: NextFunction) { console.log('Request...'); next(); }} 공식문서를 보면 next() 함수도 미들웨어라고 하는 내용..
·JaveScript/NestJS
@Module()은 데코레이터로 주석이 달린 클래스입니다 .@Module() 데코레이터는 메타데이터를 제공하는데, 이는 Nest 구조를 만드는데 도움을 줍니다. 최상단에 Root 모듈(App Module)이 존재합니다.루트 모듈을 통해 애플리케이션 그래프 구조를 구축할 수 있게 되며, 모듈과 공급자 관계 및 종속성 관계를 정의하는데 사용하는 내부 데이터 구조입니다. provider, controllers , services, repository, imports, exports... 다양한 모듈이 있을 수 있습니다.모듈은 기본적으로 공급자(provider)를 캡슐화합니다.모듈에서 내보낸 공급자만이 모듈의 공용 인터페이스로 간주해 사용할 수 있습니다.모든 모듈은 싱글톤 구조이므로 여러 모듈간에 모든 공급자의..
·JaveScript/NestJS
Provider란 Provider는 Nest에서 가장 중요한 개념입니다.기본 Nest 클래스 중 상당수는 service, repository, factory, helpers 등 거의 모든 것이 Provider로 취급될 수 있습니다.Provider의 주요 아이디어는 종속성으로 주입(dependency Injection) 될 수 있다는 것입니다.이는 객체가 서로 다양한 관계를 생성할 수 있으며 이러한 객체를 "연결(wiring up)"하는 기능이 주로 Nest 런타임 시스템에 위임(delegated)될 수 있음을 의미합니다. import { Injectable } from '@nestjs/common';import { Cat } from './interfaces/cat.interface';@Injectabl..
·JaveScript/NestJS
@Body() 데코레이터는 NestJS에서 사용되는 데코레이터로, HTTP 요청의 본문(body)을 가져와서 컨트롤러 메서드의 매개변수로 주입하는 역할을 합니다. 이를 통해 클라이언트가 POST, PUT 등의 요청을 보낼 때 본문에 포함된 데이터를 쉽게 접근할 수 있습니다. import { Controller, Post, Body } from '@nestjs/common';class CreateCatDto { name: string; age: number;}@Controller('cats')export class CatsController { @Post() create(@Body() createCatDto: CreateCatDto) { return `This action adds a new ..
알면 알 수록 재밌다!
'JaveScript' 카테고리의 글 목록