CommonJS는 웹 브라우저 밖의 자바스크립트를 위한 모듈 생태계의 규칙을 설립하기 위한 프로젝트이다
로 정의된다.
일단
브라우저와 다르게 node.js의 특징 중 하나는, 다양한 내장 모듈이 존재한다는것이다.
브라우저는 다른스크립트 파일 불러올때 html에서 <script>
태그를 사용했다.
사용하려면
const 모듈이담긴변수 = require("모듈이름")
// script1.js
const module2 = require('./script2.js') // ./는 현재 디렉토리입니다.
// script2.js
console.log('this is module 2');
// script1.js
const module2 = require('./script2.js')
console.log(modules2) // 'this is module 2'
// script2.js
module.exports = 'this is module 2'
module.exports 대신에 exports를 사용할수 있다. 일종의 축약형(shortcut)이다.
이러한 모듈노출방법과 불러오는방법을
CommonJS 모듈 시스템 이라고 부른다.
cycles? : 순간 노드js가 멀티쓰레드 인줄 알았다..;;
아니고 일단 기본적으로 require에 대해서 사용해볼만한 예시를 알려준다.
이렇게 실행하면 어떻게되는가 ??
a.js:
console.log('a starting');
exports.done = false;
const b = require('./b.js');
console.log('in a, b.done = %j', b.done);
exports.done = true;
console.log('a done');
b.js:
console.log('b starting');
exports.done = false;
const a = require('./a.js');
console.log('in b, a.done = %j', a.done);
exports.done = true;
console.log('b done');
main.js:
console.log('main starting');
const a = require('./a.js');
const b = require('./b.js');
console.log('in main, a.done = %j, b.done = %j', a.done, b.done);
결과를 충분히 추측해보자
결과보기$ node main.js
main starting
a starting
b starting
in b, a.done = false
b done
in a, b.done = true
a done
in main, a.done = true, b.done = true