Node.js

    [NestJS] NestJS 시작하기

    @nestjs/cli를 전역으로 설치를 하고 프로젝트를 생성합니다. nest new로 프로젝트를 생성하실 때는 원하는 경로로 이동후 실행하셔야합니다. $ npm i -g @nestjs/cli $ nest new [프로젝트명] 그럼 app.module.ts, app.controller.ts, app.service.ts 가 src/ 폴더 안에 생성되는데 하나씩 역할을 살펴보겠습니다. module module.ts는 하나의 기능을 하는 모듈을 말합니다. module안에는 contorller와 provider가 있을 겁니다. controller 컨트롤러는 기본적으로 url을 가져오고 함수를 실행합니다. express에서 라우트같은 존재라고 할 수 있습니다. 컨트롤러에는 데코레이터가 있습니다. 한 가지 주의할 점..

    [NestJS] NestJS 시작하기

    @nestjs/cli를 전역으로 설치를 하고 프로젝트를 생성합니다. nest new로 프로젝트를 생성하실 때는 원하는 경로로 이동후 실행하셔야합니다. $ npm i -g @nestjs/cli $ nest new [프로젝트명] 그럼 app.module.ts, app.controller.ts, app.service.ts 가 src/ 폴더 안에 생성되는데 하나씩 역할을 살펴보겠습니다. module module.ts는 하나의 기능을 하는 모듈을 말합니다. module안에는 contorller와 provider가 있을 겁니다. controller 컨트롤러는 기본적으로 url을 가져오고 함수를 실행합니다. express에서 라우트같은 존재라고 할 수 있습니다. 컨트롤러에는 데코레이터가 있습니다. 한 가지 주의할 점..

    [NodeJS] require() 함수 동작원리

    require()는 대략적으로 다음과 같은 구조라고 합니다. var require = function(src){ var fileAsStr = readFile(src) //line 2 var module.exports = {} //line 3 eval(fileAsStr) //line 4 return module.exports //line 5 } const express = require('express') 1. express라는 것을 function의 src인자로 넣습니다. 2. fileAsStr이라는 변수에 파일을 읽어와 저장합니다. 3. module.exports라는 빈 객체를 만듭니다. 4. fileAsStr을 실행합니다. 기본적으로 module.exports 와 require를 사용할 수 있는 이유..

    [NodeJS] 템플릿엔진

    템플릿 엔진의 필요성 html을 컨트롤하기 위해 여러 템플릿엔진들이 있습니다. 템플릿엔진을 사용하면 서버에서 온 데이터들을 조금 더 쉽게 다룰 수 잇다는 장점이 있습니다. 대부분의 템플릿엔진은 html에 비해 문법이 간단하여 코드량을 줄일 수 있습니다. 데이터만 바뀌는 경우가 굉장히 많으므로 재사용성을 높일 수 있습니다. 유지 보수에 용이합니다. 템플릿엔진에는 Server Side Template Engine과 Client Side Template Engine 이 있습니다. Server Side Template Engine 서버에서 미리 정의된 Template에 넣어 html을 그려서 클라이언트에 전달하는 방식입니다. 동적으로 생성되는 부분만 템플릿에 소스 코드를 끼워넣는 방식으로 동작합니다. 자스크립트..

    [Sequelize] TypeError: require(...) is not a function

    sequelize를 사용할 경우 model폴더의 index.js 에 다음과 같은 에러가 나는 경우가 생겼습니다. TypeError: require(...) is not a function index.js의 아래의 코드라인에 에러가 생겼는데 const model = require(path.join(__dirname, file))(sequelize, Sequelize.DataTypes); 저의 경우 여러 model이 생성되어 있었는데 파일만 생성되어있고 비어있는 js파일이 있어서 에러가 났던 거였습니다. 비어있는 js파일을 지우고 실행하면 해결됩니다.

    [Node.js] 동기와 비동기, 블로킹과 논블로킹

    블로킹과 논블로킹의 차이 제어권을 콜백함수에 넘겨주느냐 마느냐의 차이입니다. A함수가 B함수를 호출 시 블로킹 경우 콜백함수를 실행 할 때 B함수에 제어권을 넘깁니다. 따라서 A함수는 제어권이 없기 때문에 잠시 실행을 멈추게 됩니다. 논블로킹 A함수가 B함수를 호출해도 제어권은 A함수가 그대로 가지고 있습니다. 따라서 A함수는 B함수를 호출한 이후에도 그대로 실행됩니다. 동기와 비동기의 차이 호출되는 함수의 결과값을 신경쓰냐 마냐의 차이 동기 A함수가 B함수를 호출하고 리턴값을 계속 신경쓰는 방식입니다. 비동기 A함수가 B함수를 호출할 때 콜백함수를 함께 전달해서 함수 B의 작업이 완료되면 함께보낸 콜백함수를 실행하는 방식입니다. 이제 이 둘을 섞어서 비교해보자 동기를 블로킹처럼 실행(Sync-Block..

    [Node.js] Stream이란??

    Stream Stream에는 두가지가 있습니다. 1. file에서 읽어오는 Stream 2. network에서 읽어오는 Stream 스트림이 가능한 소스로부터 핸들러에게 해당데이터를 여러개의 청크로 나누어서 보내주는 형태의 구현체를 스트림이라고 합니다. 여러가지의 소스를 가질 수 있습니다. 큰데이터를 처리해야 하거나, 비동기적으로만 얻을 수 있는 데이터를 처리해야 할 때 유용합니다. ex 1) 5G쯤 되는영상파일을 압축할 경우, ex 2) 네트워크 input 등, tcp소켓같은 경우 언제 데이터가 올지 알 수 없습니다. const fs = require('fs') const rs = fs.createReadStream('file.txt') rs.on('data', data => { // Do someth..