NPM이란?
-Node Package Manager / Node.js 프로젝트를 관리하는 필수적인 도구
온라인 저장소 + 커맨드라인 도구
NPM온라인 저장소
-수많은 오픈소스 라이브러리와 도구들이 업로드 되는 저장소
커맨드라인 도구
-프로젝트 관리를 위한 다양한 명령어를 제공
NPX란?
//npm
$ npm i cowsay -g
$ cowsay hi
//npx
$npx cowsay hi
npm 패키지를 설치하지 않고 사용할 수 있게 해주는 도구
프로젝트에 추가하거나 전역 패키지로 추가하지 않고, npx를 이용하여 바로 실행할 수 있음
프로젝트의 node.js 버전 별 실행환경을 확인할 때 유용
npx를 사용하면 gist코드를 다운받지 않고 바로 실행 가능
gist는 github에 등록된 간단한 코드
다만 git이 설치되어 있어야 하고, 온라인상의 코드는 어떤 위험이 있을지 모르므로 코드를 잘 확인하고 실행해야 함
모듈이란
프로젝트의 규모가 커짐으로서 파일을 나뉘어야 할 때가 오는데 나뉘어진 파일 하나를 '모듈'이라고 한다. 큰 프로그램 또는 시스템을 구성하는 독립적이고 재사용이 가능한 코드의 단위이다.
패키지란?
패키지는 모듈의 모음이다. npm 패키지들은 많은 모듈을 포함하고 있는 코드의 모음이다.
모듈의 기본적인 작성법
//myName.js
const name = 'myName'
const age = 99;
const nationality = 'Korea';
module.exports { //모듈이 load될 때 사용될 값을 module.exports로 내보냄
name,
age,
nationality,
};
const person = require('/myName');
//person의 출력 값 {name:'myName', age:99, nationality:'Korea';}
변수명으로 export하는 모듈 작성법
//myName.js
const name = 'myName'
const age = 99;
const nationality = 'Korea';
exports.name = name;
exports.age = age;
exports.nationality = nationality;
const person = require('/myName');
//person의 출력 값 {name:'myName', age:99, nationality:'Korea';}
//위에서 작성한 코드와 값이 똑같이 출력
이 모듈에서는 모듈을 object로 만들고, 각 key - value로 지정해서 내보냄
함수를 export하는 모듈 작성법
//myName.js
module.exports = (name, age, nationality) => {
return {
name,
age,
nationality,
};
}
const person = require('/myName');
//person의 출력 값 {name:'myName', age:99, nationality:'Korea';}
모듈을 함수로 만들어서 모듈 사용 시에 값을 정할 수 있게 내보냄
- require함수를 통해 모듈을 load할 수 있음 즉, require할 때 모듈 코드가 실행됨 /// 함수형 모듈은 load한 경우 모듈이 바로 실행 되지않고 필요한 시점에 load된 함수를 실행하여 모듈을 사용할 수 있음
- Node.js의 모듈은 첫 require 시에 cache, 두 번 실행하지 않음
- 모듈 코드를 여러번 사용하기 위해서는 함수 모듈로 작성
- require로 json파일도 load가능 , object로 자동파싱
export와 exports
주로 JavaScript의 모듈 시스템에서 사용되는 명령어. 특히 Node.js 환경과 ES6의 모듈 시스템에서 그 사용법과 의미가 다르므로, 환경과 사용법에 따라 구분해서 사용해야 한다.
- Node.js(CommonJS)
- 'exports' : 'exports'는 Node.js에서 모듈을 생성할 때 사용되는 객체이다. 함수나 객체를 'exports'에 추가하면 다른 파일에서 'require'를 사용하여 가져올 수 있다.
exports.myFunction = function() {
// function code here
};
- 'module.exports' : 'exports'와 동일한 목적으로 사용되지만, 모듈 전체를 함수,객체,클래스 등으로 대체할 수 있다.
module.exports = function() {
// function code here
};
2. ES6(ES2015)
- 'export': ES6모듈 시스템에서 변수,함수,클래스 등을 내보내기 위해 사용하는 키워드이다. 이를 통해 다른 ES6모듈에서 'import'구문을 사용하여 가져올 수 있다.
export function myFunction() {
// function code here
};
또는 코드를 여러개 한 번에 내보내기:
export { function1, function2, variable1 };
주의할 점은 'exports'와 'export'는 서로 다른 모듈 시스템에 속하므로, 한 환경에서 다른 문법을 사용하면 오류가 발생한다. 따라서 개발 환경과 필요에 따라 적절한 명령어를 선택하여 사용해야 한다.
'Elice' 카테고리의 다른 글
[TIL]엘리스트랙 - 6주차 5일 (0) | 2023.09.15 |
---|---|
[TIL]6주차 1일 - Express.js (0) | 2023.09.11 |
[TIL]엘리스트랙 5주차 5일 - TypeScript/Interface (0) | 2023.09.08 |
[TIL]엘리스트랙 5주차 3일 TypeScript (0) | 2023.09.06 |
[TIL]엘리스트랙 5주차 1일 Node.js (0) | 2023.09.05 |