본문 바로가기

전체 글

[Node.js 교과서] 2-5. global, console, 타이머 (Node js의 내장객체) 위 그림처럼 module을 먼저 import 해서 써야하는데, module은 내장 객체 이므로 바로 사용할 수 있음 이런 Node js에서 제공하는 내장 객체들을 알아보자 Global 노드의 전역 객체 (브라우저의 window 같은 역할) 모든 파일에서 접근 가능 (window처럼 생략도 가능) (console, require도 global 속성 : 원래는 global.console.log() 이렇게 사용해야하는데 global을 생략 가능) console console.dir ({hello:'hello'}) → 객체를 로깅할 떄 사용 console.time ~ console.timeEnd : 코드 실행 시간 측정할 때 사용 // 다양한 console 모듈 const string = 'abc'; const.. 더보기
[Node.js 교과서] 2-4. ECMAScript 모듈, 다이나믹임포트, top level await ECMAScript 모듈 ECMAScript 모듈 (ES 모듈)은 공식적인 자바스크립트 모듈 형식 노드에서 아직까지는 CommonJS 모듈을 많이 쓰긴 하지만, ES 모듈이 표준으로 정해지면서 점점 ES 모듈을 사용하는 비율이 증가하고 있음 브라우저에서도 ES 모듈을 사용할 수 있어 브라우저와 노드 모두에 같은 모듈 형식을 사용할 수 있다는 것이 장점 결국에는 ES 모듈로 전환될 것임 var.mjs //CJS 모듈 형식 const odd = 'CJS 홀수' const even = 'CJS 짝수' module.exports = { odd, even } //ES모듈형식 export const odd = 'CJS 홀수' export const even = 'CJS 짝수' require와 exports, mod.. 더보기
[Node.js 교과서] 2-3. exports, this, require, 순환참조 Exports js 파일에서 export를 여러개 할 때는 module.exports 에 객체 안에 대입해서 선언 한개를 export할 때는 module.exports 에 직접 대입 module.exports와 exports를 같이 쓸 수 없음 const odd = '홀수입니다' const even = '짝수입니다' exports.odd = odd; exports.even = even; module.exports === exports === {odd, even} module.exports = { odd, even } function checkOddOrEven (number) { if (number%2) { return odd; } else { return even; } } //아래처럼 module.exp.. 더보기
[Node.js 교과서] 2-1,2. REPL 및 CommonJS 모듈 시스템 REPL (Read, Evaluate, Print, Loop) 자바스크립트는 스크립트 언어라서 라인 단위로 코드를 실행할 수 있음 그래서 node js에서는 REPL이라는 콘솔 제공 윈도우에서는 명령 프롬프트, Mac이나 리눅스에서는 터미널에서 node 입력 But 코드줄이 많은 내용을 프로그래밍 할때는 REPL이 아닌, 편집기 (vs code 등..)을 사용 Module 노드는 JS 코드를 모듈로 만들 수 있음 - 모듈 : 특정한 기능을 하는 함수나 변수들의 집합, 모듈로 만들면 여러 프로그램에서 재사용 가능 같은 폴더 내에 2_CommonJS_module_system.js 와 2_1_test.js 파일을 생성 아래에서 처럼 module.exports 를 이용해 변수를 외부에서 사용할 수 있게 선언할 .. 더보기
[Node.js 교과서]1-5. 화살표 함수 함수를 선언할 때, 화살표 함수를 이용하면 조금 더 간결하게 함수를 선언할 수 있음 add1~4는 다 같은 함수 function add1(x,y) { return x+y; } const add2 = (x,y) => { return x+y; } const add3 = (x,y) => x+y; const add4 = (x,y) => (x+y); //주의 사항! 화살표 함수 return이 객체면 소괄호로 감싸서 return 선언해야함 const obj = (x,y) => ({x,y}) 아래 not1, not2도 같은 함수 function not1(x) { return !x; } const not2 = x => !x; arrow Function과 Function에서의 This //일반 함수에서의 this thi.. 더보기
[Node.js 교과서]1-1,2. 호출 스택, 이벤트 루프 호출 스택 (Call Stack) 호출 스택은 여러 함수들을 호출하는 스크립트에서 해당 위치를 추적하는 인터프리터 현재 어떤 함수가 실행중인지, 그 함수 내에서 어떤 함수가 호출되어야 하는지 등을 제어 예시 아래 코드는 세 번째 → 두 번째 → 첫 번째 순서로 실행됨 이 실행 순서를 아래 처럼 함수들이 호출되는 순서대로 쌓이는 데이터 구조로 생각하자 - Anonymous : 가상의 전역 컨텍스트 - 함수 호출 순서대로 쌓이고, 역순으로 실행됨 (LIFO) / 함수 실행이 완료되면 스택에서 빠짐 function first() { second(); console.log('첫번쨰') } function second() { third(); console.log('두번쨰') } function third() { .. 더보기
.gitignore 적용안되는 이슈 해결법 gitignore을 사용하지 않고 파일을 업로드 했는데 모르고, node_modules 폴더도 같이 업로드 했을때. 황급하게 .gitignore파일에 node_modules을 입력하고 올려도 적용이 안되는 이슈가 있습니다. git의 캐시 문제이기 때문에 캐시를 지워주고 다시 파일을 업로드 해주면 됩니다. git rm -r --cached . git add . git commit -m "Remove node_modules" 더보기
동기, 비동기에서의 예외처리 요약 Node.js 개발 환경에서 에러 핸들링 방법에는 (1) Throw, (2) Try & Catch, (3) Middleware 이 있음 Throw와 Try-Catch를 이용한 방식은 각각 동기, 비동기를 기준으로 문법을 달리 표현이 가능 Middleware를 이용한 방식은 다양한 에러를 개발자가 의도한 특정 에러로 수렴하여 전달할 수 있다는 장점이 있음 비동기 에러 핸들링을 Middleware를 이용하여 처리하려면 async-wrap 과 같은 별도의 컨트롤러를 적용해야 함 각각의 에러 핸들링 방식은 특정 한계점이 있으며, 서로 상호 보완하는 모습이 있음 예외 (Exception) 사전적 의미의 예외는 일반적인 통례나 정해진 규칙에서 벗어남 을 의미한다. 그렇다면 프로그래밍에서 예외란 무엇일까? 자바.. 더보기