-
06/02 node.js게임 웹 프로그래밍/node.js 2021. 6. 2. 13:27
1. 비구조화 할당
객체와 배열로부터 속성이나 요소를 쉽게 꺼냄
let candyMachine = { status:{ name:'node', count:5 }, getCandy: function(){ this.status.count--; return this.status.count; } }; // const getCandy = candyMachine.getCandy; // let count = getCandy(); // console.log(count); // count = candyMachine.status.count; // console.log(count); let array = ['nodejs', {}, 10, true]; // let node = array[0]; // let obj = array[1]; // let bool = array[3]; const [node, obj, , bool] = array; console.log(node, obj, bool);
2. 프로미스
콜백헬 극복을 위한 장치
- 프로미스 객체 생성
- resolve와 reject를 매개변수로 갖는 콜백함수를 넣어줌
- 프로미스 객체가 있는 변수에 then 또는 catch메서드를 붙임
resolve가 호출되면 then, reject가 호출되면 catch가 실행
//1. 프로미스 객체 생성 //2. resolve, reject 매개변수가 있는 콜백함수 전달 //3. 변수에 할당 //new Promise(function (resolve, reject){}); let promise = new Promise((resolve, reject)=>{ //4. 기능구현 let x = 0; if(x == 0){ let status = { desc: '테스트 상태 객체' }; status["code"] = 200; status.message = "OK"; resolve(status); }else{ reject('error'); } }); //5. 변수에 then함수 사용 promise.then( function(value){ console.log(value); }, function(err){ console.log(err); }, );
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Promise
Promise - JavaScript | MDN
Promise 객체는 비동기 작업이 맞이할 미래의 완료 또는 실패와 그 결과 값을 나타냅니다.
developer.mozilla.org
3. async/await
await를 함수 내부에서 사용하려면 함수가 async로 선언
화살표 함수도 async와 같이 사용 가능
4. AJAX
비동기적 웹 서비스를 개발하기 위한 기법
페이지 전환 없이 새로운 데이터를 불러오는 것이 가능
5. 모듈로 만들기
모듈은 특정한 기능을 하는 함수나 변수들의 집합
var.js
const odd = '홀수'; const even = '짝수'; module.exports = { odd, even };
func.js
const { odd, even } = require('./var') console.log(odd, even);
6. 노드 내장 객체
api문서
https://nodejs.org/dist/latest-v14.x/docs/api/index.html
Index | Node.js v14.17.0 Documentation
nodejs.org
7. global
const string = '홍길동'; const number = 1; const boolean = true; const obj = { outside : { indide: { key: 'value' } } }; console.time('전체시간'); console.log('로그입니다.'); console.log(string, number, boolean); console.error('error메서지 입니다.'); console.dir(obj, { colors: false, depth: 2}); console.dir(obj, { colors: true, depth: 1}); console.time('시간측정'); for(let i = 0; i<100000; i++) { continue; } console.timeEnd('시간측정'); function b() { console.trace('에러 위치 추적'); } function a() { b(); } a();
setTimeout
const timeout = setTimeout(() => { console.log('1.5초 후 실행'); }, 1500); setTimeout(()=> { console.log('clear timeout'); clearTimeout(timeout); }, 2500);
setInterval
let interval = setInterval(()=>{ console.log('1초 마다 실행'); }, 1000); setTimeout(()=>{ clearInterval(interval); }, 2500);
__filename, __dirname
console.log(__filename); console.log(__dirname);
동적 모듈 추가
var.js
exports.odd = "홀수입니다."; exports.even = "짝수입니다.";
filename.js
const {odd, even} = require('./var'); console.log(odd, even);
== 값 비교
=== 값, 타입 비교
process.nextTick(콜백)
우선실행
os
운영체제, cpu 등 정보 취득
path
폴더와 파일의 경로를 쉽게 조작하는 모듈
url
url.parse
querystring
crypto
암호화 모듈
단방향 암호화
util
8. 파일시스템 접근하기
fs모듈은 파일 시스템에 접근하는 모듈
cdn서버
사진, 영상 등을 저장하는 서버
redis
메모리DB 덜 중요하고 자주쓰는 정보를 메모리에 올려놓고 사용
파일 읽기
file.js
const fs = require('fs'); fs.readFile('./readme.txt', (err,data) => { if(err) throw err; console.log(data); console.log(data.toString()); });
readme.txt
저를 읽어주세요.
파일 쓰기
file.js
fs.writeFile('./writeme.txt', '안녕하세요', (err)=>{ if(err) throw err; })
9. 버퍼와 스트림
버퍼링은 영상을 재생할 수 있을 때까지 데이터를 모으는 동작
스트림은 영상 데이터를 조금식 전송하는 동작
버퍼조각은 chunk라고 부름
10. 이벤트
on
이벤트 함수
미리 정의된 이벤트 상황이 있음('end', 'data' 등)
우리의 이벤트를 만들 수 있음
const EventEmitter = require('events'); const myEvent = new EventEmitter(); myEvent.addListener('event1', () => { console.log('이벤트 1'); }); myEvent.emit('event1');
11. 예외 처리
노드에서는 예외처리가 정말 중요
에러가 발생하면 서버가 멈추기 때문
스케일링
같은 기능을 하는 서버를 여러개 두는 것
try catch
uncaoughtException이벤트 리스너
프로세스 유지 목적
최후의 수단
복구작업코드를 넣지 말아야함, 넣더라도 동작를 확신할 수 없음
'게임 웹 프로그래밍 > node.js' 카테고리의 다른 글
06/09 node.js (0) 2021.06.09 06/08 node.js (0) 2021.06.08 06/04 node.js (0) 2021.06.04 06/03 node.js 서버 (0) 2021.06.03 06/01 node.js (0) 2021.06.01