
스프링부트 공부하다가
노드 공부하려니 재밌다..ㅜ
확실히 나는 자바기반보다는 자스기반이 더 맞는 거 같다..
아무튼
오늘도 킵고잉~!

1. module과 require, exports
node에서의 모듈이란 어플리케이션을 구성하는 개별적 요소이다.
독립된 기능을 갖는 함수나 파일들의 모임이다.
이 말은 기능별로 나누어서 필요할 때 호출해서 쓸 수 있다는 얘기이다.
module.exports를 이용하여 보낼 수 있고,
require를 통하여 다른 파일에서 호출할 수도 있다.
(나는 html에서의 import와 비슷하다고 생각한다.)
require를 사용하다 보면 처음 호출할 때는
하드디스크에서 꺼내와서 메모리로 옮기는 캐싱기능을 하지만
한번 이상 호출 시에는 바로 메모리에서 가져올 수 있다.
그리고 exports는 기본적으로 빈 객체이다.
또한 전역 스코프에서의 this는 빈객체이다.
왜냐면 여기서의 this는 module.exports 이기 때문이다.
this === module.exports === {} === exports
+여기서 tip
다른 파일의 함수나 객체를 부르지 않고 그냥 실행만 시키고 싶을 때는
require('다른페이지')라고 호출만 할 수도 있다.
2. ES module
요즘 commonJs에서 ES module로 바뀌는 추세라고 한다.
ES 모듈은 자바스크립트의 공식적인 표준화된 모듈 시스템이 되었다고 한다.
확장자도 js, cjs에서 mjs로 바뀌었다.
export default functionName이라고 보내면
import { functionName } from './ functionName.mjs' 등으로 사용할 수 있다.
=> import시 확장자까지 풀로 써줘야 한다.
js로만 사용하고 싶으면 package.json에 type : "module"이라고 해야 한다.
require와 exports, module.exports가(commonJs)
import, export, export default(ES module)으로 바뀌었다고 생각하면 된다.
ES 모듈은 함수나 객체가 아닌 문법 그 자체이다.
가장 다른 부분은 아마 await 사용 시 async를 생략할 수 있다는 부분이다.
(top level await이라고 한다.)
그리고 impot는 항상 최상단에 코드를 적어야 한다는 부분도 있다!
그리고 dynamic import도 가능하다
사용시 awit import('./fileName.mjs')와 같이 await을 적어주고, 함수처럼 사용하면 된다.
오늘은 여기서 끝!
역시 공부하다 보면 진짜 끝이 없긴 하다..
언젠가는 척하면 척하는 사람이 되겠지!
'Backend > Node.js' 카테고리의 다른 글
| 노드 스터디 1. node란? (0) | 2024.03.29 |
|---|