[FE운영진 스터디] Node.js 기초

꾸Jun·2024년 4월 1일

🦁 멋사 12기

목록 보기
4/16

Node.js 기초

1. 갑자기 Node.js?

  • React.js는 Node.js 기반으로 돌아가므로 Node.js의 개념이 필요

Node.js

  • 웹 브라우저가 아닌 환경에서도 Javascript 코드를 실행시켜주는 자바스크립트의 런타임, 실행 환경

  • 즉 Node.js는 Javascript 코드의 구동기

    • 구동기란 게임기가 게임을 실행시켜주듯이 어떤 것을 실행시켜 주는 환경
  • 단순한 상호작용만 개발할 수 있었던 언어인 Javascript를 범용적으로 사용할 수 있도록 도와주는 Javascript의 실행 환경, 즉 런타입이며 우리가 배우고자 하는 React 또한 Node.js 기반으로 동작


2. npm

  • Node.js의 프로젝트의 단위인 패키지를 관리하는 도구
  • 패키지를 생성, 외부 라이브러리를 설치, 삭제를 도와줌

패키지

  • Node.js 환경에서 사용하는 프로그램 단위
  • Javascript 앱, React 앱, 라이브러리는 패키지로 이루어짐

node.js 환경에서 Javascript 파일 실행

  • 원래 브라우저 상에서 Javascript가 실행되었는데, 이것을 Node.js 환경에서 실행하고자 함

  • npm init을 통해 node.js 패키지를 생성

  • index.js 파일을 생성해서, 콘솔창에 node index.js를 치면 실행

  • 경로가 복잡해지면 package.json 폴더에서 sciprts를 수정하면 됨

  • “start” : “node src/index.js”을 추가하면, npm run start 명령어로 src폴더의 index.js을 실행할 수 있음



3. Node.js 모듈 시스템

모듈

  • 여러 기능들을 한 파일에 작성하면 코드양이 엄청 많아짐
  • 버그 수정, 기능 수정이 어렵다
  • 효율성, 생산성이 떨어짐
  • 기능별로 파일을 나눠서 개발함
  • 기능별로 나뉘어진 각각의 Javascript 파일을 모듈이라고 부름

모듈 시스템

  • 모듈을 생성하고, 불러오고, 사용하는 등의 모듈을 다루는 다양한 기능을 제공하는 시스템
  • Javascript에는 여러 모듈 시스템이 있음
    • Common JS (CJS)
    • ES Module (ESM) 등등

Common JS 모듈 시스템 실습

  • 내보내고자 하는 모듈에서 module.exports = {}을 사용
  • 받고자 하는 모듈에서 require(경로)를 사용
  • const moduleData = require(경로)를 하면 객체 형태로 저장되어 꺼내서 사용하거나 구조분해 할당해서 사용가능

ES 모듈 시스템 실습

  • ES 모듈 시스템을 사용하려면, package.json 파일에서 “type” : “module”을 추가해줘함. 추가하면 Common JS를 사용하지 못해서 npm run start를 하면 오류가 발생

  • 내보내고자 하는 모듈에서 export = {}안에 원하는 것을 담음

  • 받고자 하는 모듈에서 import { } 경로를 사용. ES 모듈 시스템을 사용할 때는 확장자까지 꼭 적어야 함

  • 함수 앞에 export 키워드를 붙여도 똑같이 동작

  • export default를 붙여서 default로 내보낼 수 있음

  • 동일한 경로에서 불러오는 import 문은 합칠 수 있음


4. Node.js 라이브러리 사용

라이브러리

  • 프로그램을 개발할 때 필요한 다양한 기능들을 미리 만들어 모듈화 해놓은 것
  • npmjs.com에서 원하는 node.js 라이브러리를 가져와 import해서 사용할 수 있음

Node.js 라이브러리 실습

  • npmjs.com에서 원하는 라이브러리를 찾고. npm i를 사용해서 설치

  • 설치하면 package.json 파일에 dependencies에 randomcolor의 버전이 추가되고, node_modules, package-lock.json 파일이 추가됨

    • node_modules는 실제로 우리가 설치한 라이브러리가 저장됨
    • package-lock.json는 package.json보다 더 정확하고 엄밀하게 우리가 사용하는 라이브러리의 정보를 저장
  • 설치한 randomcolor 라이브러리를 import로 불러옴

    • 라이브러리를 불러올 때는 경로말고 이름만 명시
  • 실행해 보면 아래와 같이 hex값을 랜덤으로 출력

  • package-lock.json, node_modules 파일이 삭제되면, package.json의 dependencies에 있는 정보로 npm i 명령어를 통해 모든 라이브러리를 다시 다운받을 수 있음

  • 따라서 node_modules 파일을 굳이 git이나 다른 것을 통해 공유하지 않음


참고 출처 - 한입 크기로 잘라 먹는 리액트

profile
꾸준🐢

0개의 댓글