빠르게 배우는 Node.js 시리즈 소개 및 Node.js의 시작
빠르게 배우는 Node.js(이후 “노드”로 통칭) 시리즈는 노드용 어플리케이션 개발을 시작하고 고급 JavaScript(이후 “자바스크립트”로 통칭)에 관하여 배울 수 있게 하려고 작성된 "The Node Beginner Book” 문서를 가공하였습니다. 기존의 영문 문서를 번역하고 예제 코드들을 최신 버전(v6.2.2)의 노드에서 동작하도록 수정하였습니다. 정확한 번역보다는 구조와 표현을 바꿔가며 읽기 쉬운 글이 되는 것에 중점을 두고 작성하였습니다. 다만 저 또한 배우면서 작성한 글이기에 잘못된 내용이 있을 수 있습니다. 잘못되거나 보충되면 좋은 내용에 대한 피드백은 언제든 환영입니다!
이 시리즈의 대상
이 시리즈에서는 데이터 타입, 변수, 제어문과 같은 기본적인 것들을 다루지 않기 때문에 다른 객체 지향 언어(Ruby, Python, PHP, Java 등)에 대한 경험과 약간의 자바스크립트를 다뤄보았던 개발자들이 처음 노드를 시작하기 위해 읽기 적합합니다. 다만 다른 여러 언어와 자바스크립트에서 차이가 있는 함수와 객체에 대해서는 자세히 다룹니다.
이 시리즈의 구조
이 시리즈가 끝날 때쯤 유저들에게 웹 페이지를 보여주고 파일들을 업로드 할 수 있는 웹 어플리케이션이 완성됩니다. 단순히 기능들을 완성하는 것에서 좀 더 나아가 간결하지만 완벽한 프레임워크를 만들어 우리가 만든 어플리케이션의 다른 부분들과는 깔끔하게 분리할 것입니다.
처음에는 노드에서 자바스크립트를 개발하는 것과 브라우저에서 자바스크립트를 개발하는 것이 어떻게 다른지를 살펴보겠습니다. 그다음으로는 모든 언어를 시작할 때처럼 “Hello World”을 출력하는 어플리케이션을 구현합니다. 그 후 우리가 만들려고 하는 실제 어플리케이션에 대해 얘기해보고 이 어플리케이션을 조립하기 위해 필요한 부분들을 자세히 살펴본 후 하나씩 작업해보겠습니다.
대부분은 오래전에 HTML 개발을 시작하면서 자바스크립트를 같이 사용해보았습니다. 하지만 웹 페이지 몇 군데에서 상호작용을 위한 기능을 구현하기 위해 매우 기초적인 방식으로 사용하였고 실제 서비스를 할 수 있는 더 복잡한 웹 사이트를 위해 PHP나 Ruby, Java와 같은 프로그래밍 언어를 배워 이 언어들로 백엔드 코드를 구현했습니다.
자바스크립트를 jQuery나 Prototype 등을 통해 꾸준히 접하면서 자바스크립트가 단순히 window.open() 함수 그 이상의 것을 할 수 있음을 알고 있지만, 여전히 프론트엔드 개발에 머물러 있었습니다. 여태까지 jQuery와 같은 것을 사용하는 자바스크립트 사용자였을 뿐 자바스크립트 개발자는 아녔습니다. 그러다 서버 위에서 동작하는 자바스크립트인 노드가 나왔습니다!
이제라도 자바스크립트를 살펴봐야겠다고 마음먹었습니다. 하지만 노드 어플리케이션을 구현하는 것과 자바스크립트를 이해하는 것은 다릅니다. 여태까지 자바스크립트는 DHTML헬퍼나 jQuery와 같은 여러 종류로 사용되었기 때문에 올바른 방식으로 배우기가 어려웠습니다. 그래서 이 시리즈를 통해 단순히 자바스크립트를 사용하는 것이 아닌 자바스크립트를 개발한다고 느낄 수 있는 노드 어플리케이션을 작성할 수 있도록 가이드를 제공하고자 합니다.
저는 뛰어난 자바스크립트 개발자가 아닙니다. 백엔드 웹 어플리케이션 개발에 관해 한 두개쯤 알고 있지만 자바스크립트와 노드에 대해서는 신참이고 좀 더 고급스러운 자바스크립트 내용에 대해서는 최근에야 배웠습니다. 그러므로 이 시리즈는 “초보에서 전문가로 이끄는 가이드”가 아닌 “아주 초보에서 발전된 초보로 이끄는 가이드”에 더 가깝습니다. 이 시리즈가 노드를 처음 시작할 때 가지고 있으면 좋겠다는 생각이 드는 문서가 되었으면 좋겠습니다.
서버 사이드 자바스크립트
자바스크립트의 첫 번째 구현체는 브라우저 안에서 동작했습니다. 하지만 이는 환경에 불과합니다. 자바스크립트로 무엇을 할 수 있는지를 정의했지만, 자바스크립트가 무엇을 할 수 있는지는 그다지 많이 알려주지 않았습니다.
자바스크립트는 완결성을 가진 언어입니다. 자바스크립트는 수많은 환경 속에서 사용될 수 있고 다른 완결성을 가진 언어들과 똑같이 무엇이든 만들 수 있습니다. 노드는 단지 다른 환경일 뿐입니다. 노드는 브라우저 밖인 백엔드에서 자바스크립트가 잘 동작할 수 있도록 해줍니다. 잘 동작하게 하기위해 구글 크롬 브라우저가 사용하는 자바스크립트 실행환경와 같은 구글의 V8 가상머신을 사용합니다.
더불어 노드는 유용한 모듈을 많이 탑재하고 있습니다. 그래서 문자열을 콘솔로 뿌리는 것과 같은 일을 바닥부터 작성할 필요가 없습니다. 노드는 서버사이드 자바스크립트 실행환경과 라이브러리 이 두 가지로 이루어져 있습니다.
이것들을 사용하기 위해 노드를 설치해야합니다. 노드 공식 사이트(https://nodejs.org/ko/)에서 설치하시면 됩니다.
“Hello World!"
우리의 첫 번째 노드 어플리케이션인 “Hello World!”를 출력하는 어플리케이션을 구현해봅시다.
주로 사용하는 에디터(메모장, 서브라임 텍스트 등)를 실행하여 00_helloworld.js라는 파일을 만들어주세요. 표준출력으로 “Hello World!” 문자열을 출력해보겠습니다.
위의 코드처럼 작성하여 저장해주세요. 작성한 코드를 노드를 통해 실행해보겠습니다.
$ node 00_helloworld.js
터미널에 Hello World!가 출력됩니다!