모듈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 (반복실행 취소)
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
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!" );
// 특정함수가 끝났을 때, 사용하기 위해
// 즉 비동기인 함수들을 순서롤 부여해 사용하기 위해 콜백함수 사용
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
'[부트캠프] IT 코딩 부트캠프 후기 > [Let's TIL🚴♀️] CodingON' 카테고리의 다른 글
[Express, ejs 모듈] 노드 모듈을 이용한 웹 서버 구축 (0) | 2022.11.22 |
---|---|
[Node.js] promise 문법, FS모듈 다루기, 서버에 연결(HTTP) (0) | 2022.11.19 |
[Node.Js] Node.js 설치와 기초 (0) | 2022.11.15 |
[GIT] GIT 다루기(branch 생성 삭제, merge기초) and 브랜치 종류 (0) | 2022.11.15 |
[개발 문화 및 협업 도구] 개발 방법론(폭포수, 애자일) and 스크럼, 칸반 (0) | 2022.11.15 |