CommonJS 모듈
Coddy Node.js 여정의 Node.js 기초 섹션에 포함된 레슨. 33개 중 10번째.
npm 패키지와 오래된 튜토리얼에서 보게 될 Node 코드의 상당수는 다른 모듈 시스템을 사용합니다.
CommonJS는 module.exports로 내보내고 require로 가져옵니다. .cjs로 끝나는 파일은 프로젝트의 나머지 부분에서 무엇을 사용하든 항상 CommonJS이며, 이런 파일을 import하면 해당 파일의 module.exports 객체를 기본값으로 받습니다.
// greet.cjs
function hello(name) {
return 'Hello, ' + name;
}
module.exports = { hello };
// app.js
import greet from './greet.cjs';
console.log(greet.hello('Ada'));exports는 처음에 module.exports와 같은 객체를 가리킵니다. exports.hello = hello는 그 객체에 항목을 추가하지만, exports = { hello }는 변수를 다른 객체로 바꾸므로 가져오는 쪽에서는 빈 객체를 받습니다.
챌린지
쉬움오래된 파일인 legacy/stats.cjs는 module.exports를 사용하는 CommonJS 방식으로 작성되어 있습니다. 이 파일을 notes.js에서 사용해 stats 명령을 추가하세요.
legacy/stats.cjs에서countWords(notes)를 완성하세요. 이 함수는 메모 배열을 받아 모든 메모에 포함된 단어 수의 총합을 반환합니다. 단어는 공백으로 구분됩니다. 처음에 주어진 세 메모인Buy milk,Call Ada,Water the plants에 대해서는7을 반환합니다. 빈 배열에 대해서는0을 반환합니다.notes.js에서import stats from './legacy/stats.cjs'를 사용해 파일을 가져오세요. 이 파일은 CommonJS 파일이므로stats는 해당 파일의module.exports객체이고, 함수는stats.countWords입니다.- 마지막
else앞에stats명령을 조건문 체인에 추가하세요. 한 줄로 메모 개수와 단어 개수를 출력합니다.3 notes, 7 wordswhere와 다른 명령도 계속 작동합니다.
직접 해 보세요: $ node notes.js 다음에 표시되는 상자에 stats를 입력하고 Enter 키를 누르세요. 3 notes, 7 words가 표시됩니다. 그런 다음 add Buy bread를 입력하고, 다시 stats를 입력하세요. 프로그램이 종료되면 저장소에서 새 메모를 잊어버리므로 여전히 3 notes, 7 words가 표시됩니다.
직접 해보기
// CommonJS 방식으로 작성된 이전 모듈.
function countWords(notes) {
// 모든 notes에 들어 있는 단어의 총 개수를 반환합니다.
return 0;
}
module.exports = { countWords };
Node.js 기초의 모든 레슨
직접 연습해 보세요: Express 플레이그라운드