본문 바로가기

Elice

[TIL]엘리스트랙 6주차 1일 node.js

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의 모듈 시스템에서 그 사용법과 의미가 다르므로, 환경과 사용법에 따라 구분해서 사용해야 한다.

  1. 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'는 서로 다른 모듈 시스템에 속하므로, 한 환경에서 다른 문법을 사용하면 오류가 발생한다. 따라서 개발 환경과 필요에 따라 적절한 명령어를 선택하여 사용해야 한다.