javascript와 node.js

node.js

이번 포스트 부터는 node.js에 대해 다뤄보도록 하겠습니다.

javascript는 browser, document 등을 다룹니다.
즉, client에 대한 개발을 하는 것입니다. 반대로 node.js는 backend를 다룰 수 있는 도구입니다.
다르게 말하면, node.js는 browser와 document는 다룰 수 없습니다.

포스트의 순서는 다음과 같습니다.

  1. node.js 설치
  2. node.js의 개념
  3. node.js와 javascript의 차이


1. node.js 설치

일단 node.js를 설치해볼까요?

  1. window version download
  2. mac os version download
  3. linux는 package manager를 통해 다운받아주세요

node.js를 설치하면 환경변수도 저절로 설정됩니다.

version 확인

설치 후에는 당연히 잘 설치가 되었나 확인해볼 필요가 있습니다.
다음과 같이 터미널에 입력해보세요.

> node -v
v10.14.1
node -v

이렇게 node.js의 version을 확인해볼 수 있습니다.
그 다음 node.js로 간단한 명령을 실행시켜 보겠습니다.

> node
> let a = 10
> let b = 20
> let c = a + b
> c
node script

이런식으로 node.js를 터미널에서 사용할 수 있습니다.


2. node.js의 개념

node.js는 chrome의 Javascript엔진인 V8이 Desktop App으로 추출된 것이라고 생각하면 좋습니다.

python과 언어만 다를 뿐이지 그 작동 원리는 똑같습니다.

javascript console(개발자도구)

javascript console

python console

python terminal

node.js console

node terminal

보이는 것 처럼 node.js, python, javascript는 비슷한 방법으로 사용됩니다.
그래도 정 이해가 되지 않는다면 이렇게 생각하세요

Chrome의 console이 밖으로 나온 것 = node.js


node.js와 npm

보통 node.js를 설치하면 npm도 같이 설치 됩니다. npm은 package manager로 사실 node.js가 유명하게 된 이유가 이 npm 때문이라고 생각해도 무방합니다.

python에 pip가 있듯이 node.js에는 npm이 있습니다.

그럼 npm도 정상적으로 설치 되었는지 확인해 볼까요?

> npm -v
6.5.0-next.0

이렇게 npm이 설치된 것을 확인할 수 있습니다. 나중에 npm을 사용하는 방법 또한 제대로 다뤄보도록 하겠습니다.


node.js로 js 파일 실행하기

node.js를 사용하면 js파일을 바로 실행할 수 있습니다. 다음과 같이 js 파일을 작성 후 저장해보세요.

// test.js
const fn = num => num * 10
console.log(fn(10))
console.log('이것은 node.js에서 실행 될 파일 입니다.')

그리고 파일이 저장 된 위치에서 다음 명령어를 실행해봅시다.

> node test.js
100
이것은 node.js에서 실행 될 파일 입니다.
javascript by node.js

이렇게 node.js를 이용하여 바로 js파일을 실행할 수 있습니다.


node.js로 간단하게 http server 만들어보기

이번에는 node.js로 http server를 구축해보겠습니다.
다음과 같이 코드를 작성하고, server.js로 저장하겠습니다.

// server.js
const http = require('http')
http.createServer((req, res) => {
  res.write('Hello World!')
  res.end()
}).listen(8080)
console.log('http server를 실행합니다.')

그리고 파일이 저장 된 위치에서 다음 명령어를 실행해봅시다.

> node server.js
http server를 실행합니다.
node http server

실제로 http://localhost:8080으로 접속해보면 http server가 만들어진 것을 확인할 수 있습니다.

http server result

이처럼 node.js는 javascript 뿐만 아니라, server를 다룰 수 있는 언어입니다.


3. node.js와 javascript의 차이

직전에 node.js는 javascript를 다룬다고 했습니다. 하지만 정확히 표현하자면, node.js는 javascript가 아니라 ECMAScript를 다룹니다. 즉, JS의 Spec를 사용하는 것입니다.

node.js와 javascript의 차이점과 공통점은 다음과 같습니다.

  1. node.js와 javascript는 ECMAScript라는 Spec을 사용한다.
  2. node.js는 server를 다룰 수 있으며, javascript는 client(BOM, DOM)을 다룰 수 있다.
  3. 반대로 말하면, node.js는 client를 다룰 수 없고, javascript는 server를 다룰 수 없다.

여기서 알아야 할 점은 ECMAScript를 익히면 node.js와 javascript 양 쪽에서 사용할 수 있지만, 나머지 부분은 별개의 부분입니다.
(이 시점에서 다시 한번 ES6+를 공부해봅시다)

즉, Native Model 이라는 것입니다.

node.js에서는 다음과 같은 것이 불가능합니다.

var ele = document.body // error

반대로, javascript에서는 다음과 같은 것이 불가능합니다.

const http = require('http') // error