프로그래밍/Node.js
[Node.js] 게시판 CRUD 만들기, 게시글 작성/상세/수정/삭제
[Node.js] 게시판 CRUD 만들기, 게시글 작성/상세/수정/삭제
2021.12.09🎯 게시판 CRUD 만들기 📝 모델 선언하기 🛠 /models/schemas/post.js const mongoose = require("mongoose"); const { Schema } = require("mongoose"); const shortId = require("./types/short-id"); module.exports = new Schema( { shortId, title: String, content: String, author: String, }, { timestamps: true, } ); 🛠 /models/index.js exports.Post = mongoose.model("Post", PostSchema); MongoDB의 ObjectID는 URL에 사용하기 좋은 값이 아니기..
[Node.js] Node.js REST API란?
[Node.js] Node.js REST API란?
2021.12.04🎯 Node.js REST API란? REST + API REST 아키텍처를 준수하는 웹 API RESTful API라고 부르기도 한다. 📝 API란 Application Programming Interface 서비스나 프로그램 간에 미리 정해진 기능을 실행할 수 있도록 하는 규약 운영체제 API, 프로그램 언어 API, 웹 API 등이 있다. 📝 REST 란? REpresentational State Transfer 웹에서 자료를 전송하기 위한 표현 방법에 대한 아키텍처 REST를 정확하게 구현하기 위해선 많은 제한조건이 있지만, 기본적인 REST 가이드를 따르면 조금 더 좋은 구조의 API를 구성할 수 있다. 📕 HTTP Method의 사용 REST API는 API의 동작을 HTTP method + ..
[Node.js] Node.js Middleware란?
[Node.js] Node.js Middleware란?
2021.12.04🎯 Node.js Middleware란? 미들웨어는 Express.js 동작의 핵심이다. HTTP 요청과 응답 사이에서 단계별 동작을 수행해주는 함수이다. 📝 미들웨어 동작 원리 Express.js의 미들웨어는 HTTP 요청이 들어온 순간부터 순차적으로 시작이 된다. 미들웨어는 HTTP 요청과 응답 객체를 처리하거나, 다음 미들웨어를 실행할 수 있다. HTTP 응답이 마무리될 때까지 미들웨어 동작 사이클이 실행된다. 📝 Route Handler Route Handler도 미들웨어의 한 종류이다. 라우팅 함수(get, post, put, delete 등)에 적용된 미들웨어이다. 일반적인 미들웨어와는 다르게 path parameter를 사용할 수 있다. 📝 미들웨어의 작성법 req, res, next를 가진..
[Node.js] Express.js 동작 방식
[Node.js] Express.js 동작 방식
2021.12.02🎯 Express.js 동작 방식 📝 Express 동작시키기 express-generator로 만들어진 프로젝트 디렉터리에 접근하여, npm start로 Express.js 프로젝트를 실행할 수 있다. localhost:3000에 접속하여 Welcome to Express 페이지를 확인할 수 있다. 📝 Express 동작 따라가기 브라우저에서 localhost:3000 접속 app.js → app.use('/', indexRouter); routes/index.js → router.get('/', ... routes/index.js → res.render('index', ... views/index.jade 📝 app.js var express = require('express'); ... var ap..
[Node.js] Node.js 웹 서비스 동작 방식, 정적 웹과 동적 웹
[Node.js] Node.js 웹 서비스 동작 방식, 정적 웹과 동적 웹
2021.12.02🎯 웹 서비스 동작 방식, 정적 웹과 동적 웹 웹 서비스는 기본적으로 HTTP 요청과 응답의 반복으로 이루어진다. HTTP 요청은 사용자가 어떤 데이터가 필요한지를 서버에게 알리는 역할 HTTP 응답은 HTTP 요청에 해당하는 적절한 데이터를 전달하는 역할 브라우저가 인터넷을 통해 HTTP 요청을 서버에 전달 서버는 사용자의 HTTP 응답을 브라우저로 전송 브라우저는 HTTP 응답을 사용자에게 적절한 화면으로 노출 📝 HTTP 요청 예시 GET / HTTP/1.1 Host: localhost:3000 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:93.0) Accept: text/html Accept-Language: ko-KR Accept-Enco..
[Node.js] Node.js 모듈의 작성과 사용
[Node.js] Node.js 모듈의 작성과 사용
2021.12.02🎯 [Node.js] Node.js 모듈의 작성과 사용 📝 모듈의 기본적인 작성법 // elice.js const name = "elice"; const age = 5; const nationality = "korea"; module.exports = { name, age, nationality, }; const student = require("./elice"); // student 출력값 { name: 'elice', age: 5, nationality: 'korea'} module.exports = { name, age, nationality, }; // 변수명으로 export 하는 모듈 작성법 // - 모듈을 object로 만들고, 각 key-value를 지정해서 내보낸다. exports.name..
[Node.js] Node.js 모듈
[Node.js] Node.js 모듈
2021.12.02🎯 Node.js 모듈 간단한 프로그램이라면 파일 하나로도 가능하다. 그러나 프로젝트가 커지면 기능에 맞게 코드를 분리하는 것이 중요하다. 모듈은 코드를 분리하기 위한 방법이다. 📝 모듈과 패키지 패키지는 모듈의 모음이다. npm 패키지들은 많은 모듈을 포함하고 있는 코드 모음이다. 📝 Node.js의 기본 제공 모듈 📕 console 브라우저에서 제공되는 console과 유사한 디버깅 도구이다. log, warn, error 함수로 로그 레벨 표시 time, timeLog, timeEnd 함수로 시간 추적 📕process 현재 실행 프로세스 관련 기능 제공한다. arch, argv, env 등 실행 환경 및 변수 관련 값 제공 abort, kill, exit 등 프로세스 동작 관련 함수 제공 📕fs 파..
[Node.js] npm과 npx는 무엇인가?
[Node.js] npm과 npx는 무엇인가?
2021.12.02🎯 NPM이란? Node Package Manager Node.js 프로젝트를 관리하는 필수적인 도구 온라인 저장소 + 커맨드 라인 도구 온라인 저장소란 수많은 오픈소스 라이브러리와 도구들이 업로드되는 저장소이다. 필요 라이브러리나 도구를 손쉽게 검색할 수 있으며 거대한 생태계를 보유 커맨드 라인 도구란, 프로젝트 관리를 위한 다양한 명령어를 제공한다. 저장소에서 라이브러리, 도구 설치 프로젝트 설정 / 관리 프로젝트 의존성 관리 📝 프로젝트 생성하기 npm init 프로젝트 디렉터리를 생성하고, 해당 디렉터리 안에서 npm init 명령어를 사용하면 몇 번의 질문을 통해 package.json이라는 파일을 만들어 주고 이 디렉터리는 Node.js 프로젝트가 된다. 📕 질문들 package name: (..
[Node.js] Node.js 이벤트 루프
[Node.js] Node.js 이벤트 루프
2021.12.02🎯 Node.js 이벤트 루프 이벤트(event)를 처리하는 반복되는 동작(loop)이다. 즉, Node.js가 비동기-이벤트 동작을 처리하는 일련의 반복 동작이다. 이벤트 루프는 Node.js만의 특징은 아니다. JavaScript의 일반적인 동작 방식으로, 브라우저에도 있다. 브라우저와 Node.js의 이벤트 루프는 기본적인 동작 방식에 큰 차이가 없다. 📝 이벤트 루프 구성요소 📕 Call Stack 작성된 함수들이 등록되는 LIFO 스택 이벤트 루프는 콜스택이 비어있을 때까지 스택의 함수를 실행 📕 Message Queue setTimeout 같은 지연 실행 함수를 등록하는 FIFO 큐 정해진 timing이 끝나고, 콜스택이 비어있을 경우 등록된 함수를 콜스택에 추가 콜스택이 비어있을 때까지 즉,..
[Node.js] Node.js 특징
[Node.js] Node.js 특징
2021.12.02🎯 Node.js 특징 싱글 쓰레드이기 때문에 비동기 동작이 필요하고 비동기 동작을 구현하기 위해 이벤트 기반의 동작 방식을 사용한다. 📝 쓰레드란? 쓰레드란 명령을 실행하는 단위 한 개의 쓰레드는 한 번에 한 가지 동작만 실행 가능 싱글 쓰레드 장점 : 쓰레드가 늘어나지 않기 때문에 리소스 관리에 효율적 싱글 쓰레드 단점 : 쓰레드 기반의 작업들의 효율이 떨어짐 ex. CPU 연산 작업 그래서 Node.js는 비동기 동작으로 쓰레드 기반의 작업을 최소화한다. 📝 비동기 멀티 쓰레드 동기 방식은 한번에 여러가지 동작을 동시에 수행할 수 있지만 동작을 실행하고 완료를 기다리는 동안에 cpu 리소스가 낭비된다. 싱글 쓰레드 비동기 방식은 한 번에 동작을 여러 가지 수행할 수 없지만 동작의 완료를 기다리지 않..
[Node.js] 자바스크립트 콘솔에서 입력 받는 방법
[Node.js] 자바스크립트 콘솔에서 입력 받는 방법
2021.11.05🎯 Node.js 콘솔창 입력받기 백준에서 알고리즘 문제를 풀 때 자바스크립트 입력받는 방법을 알아보자! 📝 한 줄 값 입력받기 자바스크립트에서는 readline 모듈을 이용하면 콘솔을 통해 값을 입력받을 수 있다. 📕 모듈 가져오기 const readline = require("readline"); 📕 readline 모듈을 이용해 입출력을 위한 인터페이스 객체 생성 const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); 📕 rl 변수 rl.on("line", (line) => { // 한 줄씩 입력받은 후 실행할 코드 // 입력된 값은 line에 저장된다. rl.close(); // 필수!! clos..