|
1 | 1 | # Quest 07. node.js의 기초
|
2 | 2 |
|
3 | 3 | ## Introduction
|
| 4 | +* 이번 퀘스트에서는 node.js의 기본적인 구조와 개념에 대해 알아 보겠습니다. |
| 5 | + |
4 | 6 | ## Topics
|
| 7 | +* node.js |
| 8 | +* npm |
| 9 | +* CommonJS와 ES Modules |
| 10 | + |
5 | 11 | ## Resources
|
| 12 | +* [About node.js](https://nodejs.org/ko/about/) |
| 13 | +* [Node.js의 아키텍쳐](https://edu.goorm.io/learn/lecture/557/%ED%95%9C-%EB%88%88%EC%97%90-%EB%81%9D%EB%82%B4%EB%8A%94-node-js/lesson/174356/node-js%EC%9D%98-%EC%95%84%ED%82%A4%ED%85%8D%EC%B3%90) |
| 14 | +* [npm](https://docs.npmjs.com/about-npm) |
| 15 | +* [npm CLI commands](https://docs.npmjs.com/cli/v7/commands) |
| 16 | +* [npm - package.json](https://docs.npmjs.com/cli/v7/configuring-npm/package-json) |
| 17 | +* [How NodeJS Require works!](https://www.thirdrocktechkno.com/blog/how-nodejs-require-works) |
| 18 | +* [MDN - JavaScript Modules](https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Modules) |
| 19 | +* [ES modules: A cartoon deep-dive](https://hacks.mozilla.org/2018/03/es-modules-a-cartoon-deep-dive/) |
| 20 | +* [require vs import](https://www.geeksforgeeks.org/difference-between-node-js-require-and-es6-import-and-export/) |
| 21 | + |
6 | 22 | ## Checklist
|
| 23 | +* node.js는 무엇인가요? node.js의 내부는 어떻게 구성되어 있을까요? |
| 24 | +* npm이 무엇인가요? `package.json` 파일은 어떤 필드들로 구성되어 있나요? |
| 25 | +* npx는 어떤 명령인가요? npm 패키지를 `-g` 옵션을 통해 글로벌로 저장하는 것과 그렇지 않은 것은 어떻게 다른가요? |
| 26 | +* 자바스크립트 코드에서 다른 파일의 코드를 부르는 시도들은 지금까지 어떤 것이 있었을까요? CommonJS 대신 ES Modules가 등장한 이유는 무엇일까요? |
| 27 | +* ES Modules는 기존의 `require()`와 동작상에 어떤 차이가 있을까요? CommonJS는 할 수 있으나 ES Modules가 할 수 없는 일에는 어떤 것이 있을까요? |
| 28 | +* node.js에서 ES Modules를 사용하려면 어떻게 해야 할까요? ES Modules 기반의 코드에서 CommonJS 기반의 패키지를 불러오려면 어떻게 해야 할까요? 그 반대는 어떻게 될까요? |
| 29 | + |
7 | 30 | ## Quest
|
| 31 | +* 스켈레톤 코드에는 다음과 같은 네 개의 패키지가 있으며, 용도는 다음과 같습니다: |
| 32 | + * `cjs-package`: CommonJS 기반의 패키지입니다. 다른 코드가 이 패키지의 함수와 내용을 참조하게 됩니다. |
| 33 | + * `esm-package`: ES Modules 기반의 패키지입니다. 다른 코드가 이 패키지의 함수와 내용을 참조하게 됩니다. |
| 34 | + * `cjs-my-project`: `cjs-package`와 `esm-package`에 모두 의존하는, CommonJS 기반의 프로젝트입니다. |
| 35 | + * `esm-my-project`: `cjs-package`와 `esm-package`에 모두 의존하는, ES Modules 기반의 프로젝트입니다. |
| 36 | +* 각각의 패키지의 `package.json`과 `index.js` 또는 `index.mjs` 파일을 수정하여, 각각의 `*-my-project`들이 `*-package`에 노출된 함수와 클래스를 활용할 수 있도록 만들어 보세요. |
| 37 | + |
8 | 38 | ## Advanced
|
| 39 | +* node.js 외의 자바스크립트 런타임에는 어떤 것이 있을까요? |
0 commit comments