Menu
CoddyTech

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 }는 변수를 다른 객체로 바꾸므로 가져오는 쪽에서는 빈 객체를 받습니다.

challenge icon

챌린지

쉬움

오래된 파일인 legacy/stats.cjs는 module.exports를 사용하는 CommonJS 방식으로 작성되어 있습니다. 이 파일을 notes.js에서 사용해 stats 명령을 추가하세요.

  1. legacy/stats.cjs에서 countWords(notes)를 완성하세요. 이 함수는 메모 배열을 받아 모든 메모에 포함된 단어 수의 총합을 반환합니다. 단어는 공백으로 구분됩니다. 처음에 주어진 세 메모인 Buy milk, Call Ada, Water the plants에 대해서는 7을 반환합니다. 빈 배열에 대해서는 0을 반환합니다.
  2. notes.js에서 import stats from './legacy/stats.cjs'를 사용해 파일을 가져오세요. 이 파일은 CommonJS 파일이므로 stats는 해당 파일의 module.exports 객체이고, 함수는 stats.countWords입니다.
  3. 마지막 else 앞에 stats 명령을 조건문 체인에 추가하세요. 한 줄로 메모 개수와 단어 개수를 출력합니다.
    3 notes, 7 words
    where와 다른 명령도 계속 작동합니다.

직접 해 보세요: $ 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 플레이그라운드