본문 바로가기

[부트캠프] IT 코딩 부트캠프 후기/[Let's TIL🚴‍♀️] CodingON

[Node.js] 노드 내장 객체와 모듈 알기 (+ 객체 구조 분해, 콜백 함수)

 

모듈Module이란?

 

- 특정한 기능을 하는 함수나 변수들의 집합

- 재사용 가능한 코드 조각

 

모듈의 장점

 

- 추상화

- 캡슐화 (묶어서 사용)

- 재사용

- 의존성 관리 (코드를 재작성하지 않고 의존적이지 않아 독립적 관리 가능)

 

모듈 만들기

만든 모듈을 실행하기 위해서는 cd '위치' 를 통해, 만든 파일 위치로 옮겨온다. 

 

const a = 'a변수';
const b = 'b변수';
//만든 변수를 모듈로 사용하려면? 내보내는 exports를 사용한다.

//여기서는 함수를 만들어서 모듈로 사용한다.
function test() {
    console.log('test');
}

//모듈로서 a,b를 내보내겠다 == 밖에서 사용할 수 있도록 세팅
module.exports = {
    a,
    b,
    test
}
//모듈 불러올 때 require사용
const result = require('./01module.js');  // require을 변수 module에 넣음

console.log( result.a ); //변수값을 가져오기 위해 .을 쓴다
console.log( result.b );
result.test(); //함수를 불러올 때에는 ()괄호를 사용하여 불러온다.

//모듈끼리도 불러올 수 있다.
 


 

Node 내장 객체

 

global

- 노드의 전역 객체 (모두가 바라볼 수 있게 상단에 올림)

- 모든 파일에서 접근 가능

- 생략하여 사용 가능

 

console 객체는

- 디버깅 콘솔에 접근할 수 있는 객체

- 브라우저마다 다르게 작동

- 어디서든 사용이 가능

 

console.time("시간");
console.timeEnd("시간"); 
이 안에 파라미터가 동일해야 시간 측정이 가능(여기서는 "시간")​

노드로 실행한 결과값

 

 

Timer 메소드

- setTimeout ( 콜백함수, 밀리초, =지연실행)

- setInterval ( 콜백함수, 밀리초, = 반복실행)

- clearTimeout (실행이 안되게)

- clearInterval (반복실행 취소)

 

[Js/자바스크립트] 타이머 함수: setTimeout, setInterval

Javascript 타이머 함수인 setTimeout, setInterval에 대하여 소개합니다.

deeplify.dev

setTimeout(function() {
    console.log("1.5초 후 실행");
}, 1500); //1500은 1.5초를 의미

// function a() {console.log("1.5초 후 실행");}
// setTimeout()은 한 번만 사용하여 이름이 필요없으므로 익명함수 사용

const func2 = setInterval( () => {
    console.log("1초마다 반복");
}, 1000);

const func3 = setTimeout( () => {
    console.log("func3 실행");
}, 3000);

setTimeout(() => {
    clearTimeout(func3);
    clearInterval(func2);
}, 2500);

const func4 = setImmediate(() => {
    console.log("func4 즉시 실행");
})

//func5는 실행되자마자 취소
const func5 = setImmediate(() => {
    console.log("func5 즉시 실행");
})
clearImmediate(func5);  //즉시 실행 취소

//코드를 전체적으로 읽고 실행

결과

 

내장 모듈 사용하기 

https://nodejs.org/dist/latest-v14.x/docs/api/os.html#os_os_tmpdir

 

OS | Node.js v14.21.1 Documentation

Source Code: lib/os.js The os module provides operating system-related utility methods and properties. It can be accessed using: const os = require('os'); os.EOL# Added in: v0.7.8 The operating system-specific end-of-line marker. \n on POSIX \r\n on Window

nodejs.org

 

[node.js] path 모듈 사용 방법 정리: 파일/디렉터리 경로 처리

node.js이 기본으로 제공하는 path모듈은 파일/폴더/디렉터리 등의 경로를 편리하게 설정할 수 있는 기능을 제공한다. 내 경우에도 node.js 개발 시에는 '안전하게' 경로를 설정하기위해 path모듈의 joi

curryyou.tistory.com

 

 

URL 모듈

- 인터넷 주소를 쉽게 조작하도록 도와주는 모듈

 

searchParams

- WHATWG 방식

 

 


JS 기본문법

 

객체 구조 분해

const { 변수 } = 객체;

• 객체 안의 속성을 변수명으로 사용
• (:) 을 이용해 새 변수명을 선언하고, 원래의 값을 새 변수명에 할당할 수 있다.

//배열 구조 분해
let list = ['apple', 'banana'];
[item1, item2] = list;
// let item1 = list[0];
// let item2 = list[1];
console.log( item1 );
console.log( item2 );

[item1, item2 = 'peach', item3 = 'orange'] = list;
console.log( item1 );
console.log( item2 ); // 없으면 peach로 대체하므로, 이미 있는 banana가 출력
console.log( item3 ); // 값이 없으면 대체되므로 orange로 출력

let x = 1;
let y = 3;

let temp = x;
x = y;
y = temp;
//바로 값이 바뀌게 하려면? 임시변수 사용
//배열 구조변화를 통해서 y,x에 값을 바꿔 넣어준 것
//이때 배열은 순서가 중요하다
[y,x] = [x,y]


//객체 구조분해

let obj = {
    a : 'one',
    b : 'two',
    e : '1',
    f : '2'
};
// let a = obj.a;
// let { a, b } = obj ; //a와 b에는 각각 one , two가 들어감
//이때 a와 b라는 key로 찾으므로, 배열과 달리 순서 상관없이 찾을 수 있다.
// console.log( a );
// console.log( b );

// 변수 이름 변화
let { b: key1, a, c = 'three'} = obj; //변수의 이름을 변경하고 싶을 때는 : 콜론 사용
console.log( a );
console.log( key1);
console.log( c );

//전개 연산자
// ...'변수명' 사용시 앞에서 추출한 걸 제외한, 나머지를 가져온다
let { b, ...rest} = obj; // ...이 전개 연산자로, 배열이나 객체를 전개해서 가져옴.
console.log( b );
console.log( rest ); //b만 빼고 나머지를 가져옴

 

클래스 

객체를 생성하기 위한 템플릿

 

 

콜백함수

- callback 함수가 끝난 뒤 실행되는 함수

- 함수를 만들 때 parameter로 함수를 받아서 사용한다.

function func1(value, call){
    console.log( value );
    call();
}
//a는 value안에, 익명함수 형태로 call에 들어감
func1('a', function(){
    console.log("1");
})

func2(function(){
    console.log("2");
})

func1(func2);
로그인 실습


// 1. 정수
// 2. 배열
// 3. 객체
// 4. 문자열
// 5. 함수

//함수 정의 
var func4 = function() {
    console.log('hello');
    return 100;
}

function func5() {
    console.log('hello');
    return 100;
}

// 일회용함수(익명함수) 2가지 1가지 또있나 모르겠다

() => { // 화살표함수
    console.log('hello');
    return 100;
}

// function() { // 익명함수
//     console.log('hello');
//     return 100;
// }

//함수 호출

// 함수명();



//전역변수 


//내부변수 
var var1 = function(){
    console.log("1");
    return 100;
}
var result = var1();
// func1 정의
function func1(value, call){ // value = 호출한곳의 값 즉 'a' => value = 'a' // call = function() { console.log("1");}
    console.log( value );
    call();
}

//a는 value안에, 익명함수 형태로 call에 들어감 익명함수 = 일회용 함수
func1('a', function(){
    console.log("1");
})

function func2(){
     console.log("2");
}
func1(func2,func2);

//로그인 실습


// 특정함수가 끝났을 때, 사용하기 위해
// 즉 비동기인 함수들을 순서롤 부여해 사용하기 위해 콜백함수 사용

console.log( "Start");
function login(id /*kim*/ , cb) {  // 이런걸 앞으로 쓸거야 실행은 지금 안해. "약쏙"
    setTimeout(() => {
        console.log('로그인 성공');
        cb(id);
    }, 2000);
}
//"호출"
// 로그인 성공 시
login('kim', function(id){          // 이걸 지금 실행해.
    console.log( id + "님 환영해요!"); // 이걸 앞으로 쓸거야 실행은 지금 안해.
});
console.log( "finish!" );
 
timer메소드는 비동기이므로 먼저 처리되었다.

// 특정함수가 끝났을 때, 사용하기 위해
// 즉 비동기인 함수들을 순서롤 부여해 사용하기 위해 콜백함수 사용

console.log( "Start");
function login(id, cb) {
    setTimeout(() => {
        console.log('로그인 성공');
        cb(id);
    }, 2000);
}
// 로그인 성공 시
login('kim', function(id){
    console.log( id + "님 환영해요!");
});
console.log( "finish!" );
 

 

콜백 지옥 (callback Hell)

- 비동기 프로그래밍 시 발생하는 문제

- 함수의 매개변수로 넘겨지는 콜백함수가 반복되어 코드 들여쓰기가 너무 깊어지는 현상

- 가독성 down 재사용성 down

 

자바스크립트 비동기 처리와 콜백 함수

(중급) 중급 자바스크립트 개발자가 되기 위한 자바스크립트 비동기 처리와 콜백 함수 이해하기. 콜백 지옥과 해결 방법 등

joshua1988.github.io