Node.js 맛보기

HI_DO·2024년 6월 5일
post-thumbnail

Node.js

  • 자바스크립트 런타임 : 자바스크립트는 웹 브라우저에 내장된 자바스크립트 엔진으로 실행된다. 그래서 자바스크립트를 실행하는 웹 브라우저를 자바스크립트의 구동환경이라고 하는데 이걸 자바스크립트 런타임이라고도 표현한다.
  • node.js가 또 하나의 자바스크립트의 런타임
  • node.js가 나오기전에는 웹 브라우저(엣지, 크롬, 사파리 등)가 유일한 자바스크립트 런타임이었음.
  • https://nodejs.org/kr
  • 설치 및 버전 확인 : cmd -> npm -v
  • 기본설정 예시 : 폴더 생성 -> vscode에서 열기 -> sample/js 생성 ->->

패키지 만들기

  • node.js 패키지를 직접 만들건데, 패키지는 여러 파일을 마치 하나의 파일처럼 다룰 수 있게 관리 단위이다. 그러면 패키지 단위로 여러 파일을 관리하려면 최상위 폴더인 '루트 폴더'가 필요.
    npm(node package manager_패키지)
  • $ npm init
  • node.js 패키지의 package.json에는 scripts라는 항목이있다. 이 scripts 항목은 복잡한 명령어를 간단한 명령어로 변경하는 매크로 기능을 지원한다.
  • index.js파일을 실행하려면 터미널에 \
    node ./index.js/

node 모듈

  • 여러 파일들로 이루어진 패키지에서 각각의 다른 파일을 불러와 사용하는 모듈 시스템에 대해 알아본다.
  • 모듈이란 독립적으로 존재하는 프로그램의 일부로 재사용이 가능한 것들을 말한다.
    자바스크립트에서는 독립된 하나의 파일을 '모듈'이라고 한다.
  • 모듈을 사용하는 방법을 '모듈 시스템'이라고 한다.
  • 리액트에서는 ES 모듈 시스템을 사용
  • ES 모듈 시스템은 ECMAScript 모듈 시스템의 약자로, 줄여서 ESM이라고 한다.
  • ESM 가장 최근에 개발된 모듈 시스템으로 리액트, Vue 같은 최신 프런트 엔드 기술은 모두 ESM을 채택하고 있다.
  • NODE.js 기본적으로 CJS(CommonJS의 약자로 node.js의 기본 모듈 시스템이다)
{
  "name": "node",
  "version": "1.0.0",
  "main": "sample.js",
  "scripts": {
    "start": "node index.js",
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "description": "",
  "type": "module"
}

-> type : module을 추가하면 node.js 패키지는 모듈 시스템으로 ESM을 사용하게 된다. 만약 package.json에서 설정을 변경하지 않고 ESM 문법을 사용하면 오류가 발생한다.

export와 import

  • 자바스크립트에서 모듈은 단지 하나의 파일일 뿐이다. 그래서 모듈의 정의처럼 '독립적이고 재사용이 가능'한 자바스크립트 파일은 다른 파일에서 불러와 사용할수 있다.
  • 모듈이 필요한 이유는 특정 파일의 값이나 함수를 다른 파일에서 공유하기 위함이다. 그런데 특정 값이나 함수를 다른 파일에서 공유하려면 먼저 해당 파일에서 내보내는(export) 공유설정 작업이 선행되어야 한다.
const PI = 3.141592;
function getArea(radius) {
    return PI * radius * radius;
}
function getCircumference(radius) {
    return 2 * PI * radius ;
}
export { PI, getArea, getCircumference };
import { PI, getArea, getCircumference } from './circle.js';
console.log(PI, getArea(1), getCircumference(1));
  • 결과값

전부불러오기

const PI = 3.141592;
function getArea(radius) {
    return PI * radius * radius;
}
function getCircumference(radius) {
    return 2 * PI * radius ;
}
export { PI, getArea, getCircumference };
// 모듈 circle.js가 내보낸 값을 모두 불러와 변수 circle에 저장한다
import * as circle   from './circle.js';
console.log(circle.PI, circle.getArea(1), circle.getCircumference(1));
  • 결과값

기본값으로 내보내기

const PI = 3.141592;
function getArea(radius) {
    return PI * radius * radius;
}
function getCircumference(radius) {
    return 2 * PI * radius ;
}
export default { PI, getArea, getCircumference };
import circle  from './circle.js';
console.log(circle.PI, circle.getArea(1), circle.getCircumference(1));
  • 결과값

라이브러리

  • node.js 패키지에서는 외부패키지를 설치해 사용할 수 있다.
  • 외부패키지란 자신이 만든 node.js 패키지를 서버에 올려 다른 사람도 사용할 수 있도록 만든 배포파일이다.
  • 외부패키지 === 라이브러리
  • 라이브러리는 완전한 프로그램은 아니며 특정 기능만을 수행한다.

라이브러리 설치 후 패키지의 변화

  • npmjs.com (라이브러리 다운받는 곳)
    -> 들어가서 받고 싶은 라이브러리 눌러서
    복사하여 터미널에 입력하면됨
  1. 패키지 루트에 node_modules 폴더가 생성
  2. package.json에 lodash 라이브러리의 정보를 저장하는 dependencies 항목이 추가됨.

    -> ^캐럿과 함께 표기된 버전은 버전의 범위(Version Range)를 뜻한다.
  3. package-lock.json이라는 파일이 생성
    패키지에서 설치된 라이브러리의 정확한 버전을 확인하려면 package-lock.json에서 확인해야 한다.

라이브러리 활용

import lodash from "lodash";
const arr =[1,1,1,2,2,1,1,4,4,3,2];
const uniqueArr = lodash.uniqBy(arr);
console.log(uniqueArr);
  • 결과값
profile
하이도의 BackEnd 입문

0개의 댓글