본문 바로가기

Node.js10

[Backend] 패키지 매니저 npm이란 Node Package Manager 노드의 패키지 매니저 다른 사람들이 만든 소스 코드들을 모아둔 저장소이다. 100만 개 정도 존재한다. 남이 미리 작성해둔 코드를 사용하여 프로그래밍이 가능하다. 이미 존재하는 기능을 다시 구현할 필요가 없어 효율적이다. 오픈 소스 생태계를 구성중이다. 패키지 패키지: npm에 업로드된 노드 모듈 모듈이 다른 모듈을 사용할 수 있듯, 패키지도 다른 패키지를 사용할 수 있다. 의존 관계라고 부름 package.json 서버를 작성할 때, 보통은 서버, 세션, 쿠키 http, 요청, 헤더 관리 등 거의 대부분을 다운 받아 이들을 연결하는 작업 정도만 직접 한다. 이렇게 다운 받은 파일들의 기록이 담긴 파일을 package.json이라고 부른다. 같은 패키지라도.. 2023. 1. 30.
[Backend] http 모듈로 서버 만들기 HTTP 서버 만들기 웹 브라우저에 www.naver.com 을 입력하면, 웹 브라우저가 client가 되는 것이고, 서버는 네이버의 서버(서버는 어떤 컴퓨터이다)가 된다. 클라이언트가 서버에 '메인 화면을 띄워달라'는 요청을 하면, 서버에서 이를 받아 화면을 띄우는 응답을 한다. 요청과 응답은 http라는 프로토콜을 사용해서 이루어진다. 노드에서는 http라는 모듈을 사용해서 코드를 작성하면 노드 프로그램을 돌릴 수 있다. createServer를 사용해 요청 이벤트에 대기할 수 있다. req 객체에는 요청에 관한 정보가, res 객체에는 응답에 관한 정보가 담겨 있다. createServer.js const http = require('http'); const server = http.createSe.. 2023. 1. 30.
[Backend] 노드 기능 REPL 자바스크립트는 스크립트 언어라서 즉석에서 코드를 실행할 수 있다. js에서는 REPL이라는 콘솔이 제공된다. R(Read), E(Evaluate), P(Print), L(Loop) Window에서는 명령 프롬프트, 맥/리눅스에서는 터미널에 node 입력하면 노드를 실행할 수 있다. 모듈 만들기 노드는 자바스크립트 코드를 모듈로 만들 수 있다. 모듈: 특정한 기능을 하는 함수나 변수들의 집합 모듈로 만들면 여러 프로그램에서 재사용이 가능하다. node의 모듈 시스템(require, module.exports)은 js의 모듈 시스템(import, export)과 문법이 다르다. require를 import ~ from ' '로, module.exports 를 export default로 대체할 수 .. 2023. 1. 26.
[Backend] 프로미스 콜백 헬이라고 불리는 지저분한 자바스크립트 코드의 해결책 = 프로미스 프로미스: 내용이 실행은 되었지만 결과를 아직 반환하지 않은 객체. 결과가 출력되기 전까지 결과를 들고다닌다. then이나 catch를 붙여서 결과를 반환받을 수 있다. 실행이 완료되지 않았으면 완료된 후에 then 내부 함수가 실행됨 promise는 어떤 동작을 한다. 예를 들면 어떤 파일을 읽어 온다든지, 네이버와 같은 웹사이트에 요청을 보낸다든지. 동작의 결과(성공 or 실패)에 따라 실행되는 코드가 나뉜다. resolve(성공 리턴값)를 호출하면 then으로 연결한다. reject(실패 리턴값)를 호출하면 catch로 연결한다. finally 부분은 무조건 실행된다. const condition = true; //true면 re.. 2023. 1. 26.
비구조화 할당 javascript에서 코드를 간결하게 만들기 위해 생긴 문법이다. 예전에는 다음과 같이 세 줄로 써야했던 코드를 const example = { a:123, b: { c: 135, d:146 }} const a = example.a; const d = example.b.d; 비구조화 할당을 사용하면 한 줄로 작성 가능하다. const { a, b: {d}} = example; //example에서 a와 b 안의 d를 꺼내두라는 뜻이다. 콘솔을 찍어보면 다음과 같은 출력이 나온다. console.log(a); //123 console.log(d); //146 예제를 하나 더 살펴보자. 배열을 사용하는 경우에도 비구조화 할당을 하면 코드가 간결해진다. arr = [1,2,3,4,5]; const x = a.. 2023. 1. 26.
화살표 함수 앞서 설명한 const 와 let은 var을 완벽하게 대체할 수 있지만, 화살표 함수는 function을 완벽하게 대체할 수는 없다. function을 사용한 기존 문법 function add1(x, y) { return x+y; } 화살표 함수 사용 const add2 = (x, y) => { return x+y; }; //함수명 대신 변수명을 쓰고, = (parameters) => 를 사용. 중괄호 뒤에 바로 return문이 나온다면, 이 둘을 모두 생략해도 된다. const add3 = (x, y) => x+y; 위 방법을 사용하면 간결하지만 헷갈릴 수 있기 때문에 대부분 리턴 값을 소괄호로 묶어준다. const add4 = (x, y) => (x+y); 객체를 리턴하는 경우, 소괄호가 필수이다. .. 2023. 1. 25.
템플릿 문자열, 객체 리터럴 탬플릿 문자열 프로그래밍을 하다 보면 종종 다음과 같은 코드를 작성하는 경우가 있다: var won = 1000; var result = '이 과자는 '+won+'원입니다.' 그런데 이런식으로 +로 출력문을 연결하게 되면 띄어쓰기를 고려해야하고 변수가 많아지면 식이 복잡해진다. 그래서 나온 게 탬플릿 문자열이다. ${}안에 변수명을 작성하면 된다. var won = 1000; const result = `이 과자는 ${won}웝입니다.`; cf) tagged template literal function(){} 내부에 함수 내용을 작성한 후, a(); 로 함수를 호출할 수 있다. 하지만 다음과 같이 소괄호()말고 백틱`을 사용해 함수를 호출할 수도 있다. a``; 이를 tagged template lit.. 2023. 1. 24.
var, const, let var: 블록 스코프 {} 밖에서도 유효함. const: 블록 스코프 {} 밖에서는 유효하지 않음. 하지만 function 스코프 function a(){} 밖으로는 var, const 모두 유효하지 않다. 따라서 var은 함수 스코프를 따르고, const는 블록 스코프를 따른다고 말한다. const에는 =를 한번만 쓸 수 있다. 따라서 const a=3; 으로 초기화하고 a= '5'; 등으로 값을 바꾸려고 하면 에러가 난다. 하지만 const에 객체를 넣은 경우에는 값 변경이 가능하다. 예를 들어, const b = { name: 'hhk' }; b.name = 'hkhkhk'; 와 같이 const 내의 객체의 값을 변경하는 것이 가능하다. js에서는 const를 처음 정의할 때 =를 무조건 딱 한 번.. 2023. 1. 24.
[Backend] 서버로서의 노드 서버로서의 노드 서버: 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램 클라이언트: 서버에 요청을 보내는 주체(브라우저, 데스크탑 프로그램, 모바일 앱, 다른 서버에 요청을 보내는 서버) 예시 브라우저(클라이언트, 요청)가 웹사이트(서버, 응답)에 접속 핸드폰(클라이언트)을 통해 앱스토어(서버)에서 앱 다운로드 노드 != 서버 But, 노드는 서버를 구성할 수 있게 하는 모듈(4장에서 설명)을 제공한다. cf) 노드 설치 후 버전 확인하는 방법 //node, npm 버전 node -v npm -v //npm 업그레이드 하기 i -g npm 2023. 1. 6.