목록BackEnd/NodeJs (11)
Will find a way

const http = require("http");// createServer 메서드가 생성한 서버를 변수나 상수로 지정해야함const server = http.createServer((req, res) => { const { url, method, headers } = req; console.log(url, method, headers); // 서버에 요청을 보내지 않으면 안됨 // res (response : 응답) 우리가 반송해야할 데이터 res.setHeader('Content-type', 'text/html'); // setHeader : 새로운 헤더 설정 / Content-type은 브라우저가 알고 이해하며 받아들이는 디폴트 헤더 // 응답에 헤더를 붙이게 되고, 컨텐츠 ..

목차1. MySql 모듈2. mysql 모듈 설치3. mysql 모듈 사용 1. MySql 모듈MySql 은 NodeJs의 외장 모듈을 통해 이용할 수 있으며 MySql 자체는 아니다.NodeJs와 이어주는 역할, 쉽게 말해 드라이버라 생각하면 된다. 특징- MySql 콜백방식- MySql2 Promise 기반으로 사용- MySql2 공식문서에서도 권장하는 모듈 2. MySql 모듈 설치npm i mysql2 3. MySql 모듈 사용- require로 MySql2 외장 모듈 가져오기const mysql = require("mysql2"); - createConnection : 연결 요청을 보내고 반환받은 객체를 통해 쿼리문을 요청할 수 있는 메서드를 제공한다.- user : 유저 이름- password..

목차1. 템플릿 엔진 (EJS)2. EJS 설치 및 사용 방법1. 템플릿 엔진우리가 많이 쓰는 HTML은 정적인 언어다. 정적인 페이지는 주어진 기능만 사용할 수 있는 한계가 있고직접 기능을 추가할 수 없다. (자바스크립트를 사용해야만 한다.) 반면에 템플릿 엔진은 자바스크립트를 사용하여 HTML을 렌더링 할 수 있다.HTML 과 문법이 거의 흡사하지만 자바스크립트의 문법이 들어갈 수 있다는 특징이 있다.(서버측에서 html을 만들어서 응답해주는 것이다.) 템플릿 엔진에는 여러가지가 있는데 우리가 알아볼 것은 그 중 EJS다. 2. EJS 설치 및 사용 방법ejs 설치npm i ejs 문법은 다음과 같다. 문법이 다소 난해하다. 밑에서 어떻게 사용하는지 예를 들어보자 server.js// ejs를 re..
fs 모듈이란파일을 읽거나 쓰거나 생성 삭제 등을 할 때 사용하는 내장 모듈 파일시스템내장 모듈이기 때문에 별도의 라이브러리 설치 없이 사용이 가능하다. 모듈 불러오기const fs = require("fs"); 비동기 함수 vs 동기 함수fs 모듈에서 제공하는 비동기 메서드는 마지막 인자로 콜백함수를 받고 아무 값도 반환하지 않는다.반면에 동기 메서드는 결과값을 반환(return)하며 예외를 일으킬 수 있다.(동기 메서드는 sync로 끝난다. 동기 / 비동기 메서드 구분이 가능) 폴더가 있는지 없는지 확인하는 법 (existsSync)let folder = fs.existsSync("test");console.log(folder);// test라는 폴더가 있으면 true 없으면 false 폴더 ..

3-Way-Handshake란?TCP는 데이터를 전송하기 전에 송신자와 수신자 간에 연결을 설정한다. 이 과정을 3-way-handshake라고 한다. 순서1. 클라이언트가 서버에 연결 요청(SYN)을 보낸다.2. 서버가 클아이언트의 요청을 승인하고 연결 수락(SYN-ACK)을 보낸다.3. 클라이언트가 서버의 수락을 확인(ACK)한다 일단 3-way-handshake를 구현하기 위해서는클라이언트와 서버가 있어야한다.서버와 클라이언트에 해당하는 코드를 구현해보자. 서버 (server)// net 내장모듈 사용const net = require("net");const server = net.createServer(() => {});// connection -> 서버측에서 서버 연결됐을 때 3-way-hand..
Node.js에서 파일 시스템 모듈(fs)과 스트림 모듈을 사용하여, 파일 'test.txt'를 읽고, 그 내용을 대문자로 변환한 후, 'test2.txt'라는 새로운 파일에 저장하는 예제. // 1. 필요한 모듈 로드// 'stream' 모듈에서 'Transform' 객체를 가져온다.// 'Transform' 스트림은 입력 데이터를 받아 변환 후 출력할 수 있는 스트림// 'fs' 모듈은 파일 시스템을 조작하기 위해 사용되며, 여기서는 파일을 읽고 쓰는데 사용된다.const { transform } = require("stream");const fs = require("fs");// 2. 청크 크기 설정// 청크 크기를 설정한다. 이 예제에서는 64Kb로 설정했다.// 스트림은 데이터를 일정크기(청크)..
목차1. 버퍼객체2. 문자 집합 2 - 1 아스키 코드 (ASCII) 2 - 2 유니코드 (Unicode) 2 - 3 인코딩 규칙3. 스트림과 버퍼 1. Buffer 객체NodeJs의 내장 객체 Buffer 공식문서바이너리 데이터의 스트림을 읽거나 조작하는 메커니즘 octet 스트림(일반적으로 8bit 형식으로 된 데이터를 의미) 과의 상호작용을 가능하게 하기 위해 만들어졌다.Buffer 클래스는 Binary Data 들의 스트림을 직접 다루기 위해 NodeJs API에 추가된 것 Binary Data2진수 참고 자료https://jakapark.tistory.com/38 2진수와 비트 / 16진수목차1. 비트(bit)란?2. 2진수3. 16진수 1. 비트(bit)란?비트는 컴퓨터에서 데이터를 표현..
// nodejs의 내장 모듈// net 내장모듈을 제공// TCP 소켓을 만들어서 사용// TCP 연결을 맺는 프로토콜을 만들 수 있다.//모듈 가져오기const net = require("net");const PORT = 8000;// 서버 객체 생성const server = net.createServer((client) => { // 클라이언트가 접속하면 보내는 데이터를 받기 위해서 // "data" : 데이터를 전송하게되면 네트워크에 전송된 데이터 // 바이너리 형식으로 전송이 된다. 클라이언트가 보낸 데이터는 Buffer("버퍼") 형태로 전송 // 서버 측에서는 해석해서 문자열로 변환해서 사용한다. // 출력된 데이터는 인코딩을 해서 데이터를 표현 해주면 되는 것 // 인코딩 u..

목차1. 모듈이란?2. require3. module.exports / exports 1. 모듈이란?- 모듈은 특정한 기능을 하는 함수나 변수들의 집합으로 프로그램의 가장 작은 단위(모듈)를 의미한다.- 만약 하나의 파일에 기능의 내용을 모두 작성하면 유지보수도 힘들고 변수명도 겹치기도 하는데 이를 방지하는데 유용하다. 2. requireNodeJs 에서 require 메서드를 통해 외부 모듈을 가져올 수 있다.형태는 괄호 안에 파일의 경로를 넣는데 다음과 같다.const a = require("./index") // index는 파일의 이름이고// js파일의 js는 생략이 가능하다 3. module.exports 와 exports1) module.exportsmodule을 내보낼 때 사용. index..

NodeJs REPL이란?REPL(Read - Eval - Print - Loop) 의 약자로 해석하면 '읽기 평가 출력 반복'의 약자이다. 즉 코드를 평가하고 코드의 실행결과를 출력해주는 것을 반복해주는 환경을 의미한다. (NodeJs에서 코드를 직접 입력할 수 있는 입출력 장치) REPL 사용법(VS code 기준)Ctrl + ` 눌러 터미널 실행을 한다.현재 폴더 경로가 맞는지 확인을 한다명령어 창에 "node 파일명"을 입력 후 실행한다. VS code로 js파일을 REPL 모드를 한 결과창이다. REPL 모드를 실행 후 명령어 창에 입력이 안되는 것을 확인할 수 있는데REPL 모드를 종료를 하려면 Ctrl + C 또는 Ctrl + D 를 누르면 된다.