ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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. 프로미스

    콜백헬 극복을 위한 장치

    1. 프로미스 객체 생성
    2. resolve와 reject를 매개변수로 갖는 콜백함수를 넣어줌
    3. 프로미스 객체가 있는 변수에 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
Designed by Tistory.