728x90
반응형

Node.js란?

브라우저에서 동작하는 자바스크립트 엔진은 브라우저마다 다르다.

  • 크롬: 구글이 자체적으로 제작한 V8엔진을 사용
  • 사파리: 웹킷
  • 익스플로러: 차크라

Node.js 는 구글의 크롬 V8엔진 기반으로 동작하는 서버사이드 런타임 이며 CommonJS 문법체계를 기반으로 동작

실행방법

컴퓨터에 nodejs가 설치되어 있고, node 명령어가 자신의 터미널 환경변수에 등록되어 있으면 node 명령어 하나면 nodejs 런타임을 실행시킬수 있다.

터미널로 열고 들어가서 자바스크립트 문법을 실시간으로 테스트가 가능하다.

JS 코드 대신에 실행할 파일을 넣게 되면 node 터미널이 뜨는 대신 실행할 파일이 동작하게 한 후 종료 됩니다. 이런식으로 nodejs를 서버쪽에서는 사용해 오고 있습니다.

npm scripts

node.js의 모듈을 다운로드 받거나 재 다운로드 하거나, 모듈의 버전을 기록해야만 다른 개발자간의 협업도 가능할텐데, nodejs 에서는 package.json이라는 버전 관리 파일 하나를 기준으로 관리 합니다. 이 파일이 프로젝트 내에 없다면 굳이 생성할 필요는 없습니다. 모듈 하나만 설치해도 package.json이 생기기 때문입니다. 그런데 이 package.json의 역할은 버전 관리 말고도 특정 명령어를 매크로로서 간단하게 실행할 수 있게 해줍니다.

{
  "name": "javascript",
  "version": "1.0.0",
  "main": "index.js",
  "license": "MIT",
  "scripts": {
    "start": "node index.js"
  },
  "dependencies": {
    "react": "0.0.1",
    "react-dom": "1.1.1"
  },
  "devDependencies": {
    "eslint": "^5.12.0",
    "eslint-config-airbnb-base": "^13.1.0",
    "eslint-plugin-import": "^2.14.0"
  }
}

개발 할때 필요한 모듈이 기록되어 있고, 어떤 버전인지도 기록되어 있습니다. 지금 scripts json 안에 start 라는 객체 보이시나요? 이 문자열은 node index.js로 되어 있습니다. 만약 저 프로젝트 내에서 npm 명령어를 이용해서 프로젝트 루트 폴더 콘솔에서 npm start 라고 타이핑 하게 된다면, node index.js가 실행되도록 할 수 있습니다. 이런식으로 npm scripts는 관리되어지고 있습니다.

근데 이게 리엑트에 왜 필요해?

리액트는 라이브러리 입니다. 다른 여타 프레임워크 (앵귤러, 뷰)처럼 리액트를 제대로 활용하기 위해서는 정말 많은 라이브러리 간 상호작용이 필요합니다. 또한 이 모듈들로 구성된 리액트 앱을 빌드해야 하죠. 개발 서버를 만들때에도 Node.js 없이 혼자서 많은 라이브러리를 다운받아서 설치하고 하는 일들은 꽤나 골치 아픈 일일 겁니다. 그래서 리액트 개발자들도 모듈 같은 것들을 npm에서 편하게 받아서 설치하고, 개발서버를 띄우는 일도 서버 런타임인 nodejs를 이용해서 개발 시 작업환경을 구성하고 있습니다. (Creact-react-app 기준)

728x90
반응형

+ Recent posts