본문 바로가기

웹 개발/node.js

[Node.js] node.js 설치 및 실행, 모듈과 코어 모듈, 브라우저와의 차이점

자바스크립트 

= 웹브라우저에서 여러 요소를 동적으로 움직이거나 외부와 통신하기 위한 언어 

 

node js 

= 자바스크립트를 웹브라우저 뿐만 아니라 다른 곳에서 사용할 수 있게 해주는 또 다른 자바스크립트 실행 환경 

= 서버에서 사용되는 프로그램 만들 수 있다. 

 

<Node.js 설치와 실행방법>

구글 검색창에 node.js 다운로드 검색하고,

LTS버전 클릭 윈도우 64비트 다운로드한다. next버튼을 눌러서 node.exe 실행파일 설치 npm도 node.js를 설치할때 같이 설치되는 실행파일이다.

*LTS = Long Term Support, node.js 커뮤니티에 의해 장기간 지원받을 수 있는 버전, 실제 서비스에서 node.js를 사용하려는 사람에게는 LTS버전을 사용하는게 좋다. current 버전은 새로 개발된 기능에 초점을 맞춘 버전 

* Node.js는 프레임 워크가 아니다. 프레임워크란 일정한 틀이 주어지고, 이 안에서 개발을 하면 웹 서비스가 만들어지는 것을 의미 (ex. django) 하지만, node.js는 django의 mvt아키텍쳐와 같이 일정한 틀이 없고, 코드를 실행하는 실행환경!

node = 실행파일, node = node.js

practice.js 파일을 node가 실행 ! 원래 자바스크립트는 브라우저 안에서만 사용할 수 있는데, 'node'를 통해서 서버에서도 실행할 수 있게 되었다. practice라고만 써줘도 실행이 잘 된다. (js 확장자 생략 가능) 

 

<모듈>

모듈 = 전체를 이루는 부품 하나 하나, javascript 파일 하나 (모듈이 모여 하나의 프로그램이 된다.)

다른 모듈에 있는 함수를 사용하기 위해서는 모듈을 로드해줘야 한다. 

require('함수가 있는 상대경로') : require는 모듈을 로드해서 객체 1개를 리턴해준다.

require 함수가 불러온 객체를 사용할 수 있도록 const math 로 객체를 상수로 할당해준다. 

exports add = add; -> 모듈 내부의 add함수를 모듈 외부로 add라는 이름으로 공개할 것이라는 의미 

모듈 안의 것을 외부에 공개하려고 할때는 exports 키워드를 사용하면 된다. 

 

* 파일의 상대 경로를 작성할때 모듈의 확장자인 .js는 붙이지 않아도 된다. 

* 같은 디렉토리라면 . 점 하나, 부모 디렉토리라면 .. 점 두 개를 사용해서 경로를 정확하게 작성해준다.

*  require 함수가 리턴하는 객체는 상수로 대입한다. let보다는 const 선

 

모듈 안에 있는 것들이 여러개 있다면 exports를 여러개 사용할 수 있다. 

exports.add = function add(a, b) { return a + b; };

하지만 이렇게 여러개의 exports를 사용하면 코드가 복잡해진다. 

=> exports하고 싶은 것들을 하나의 객체로 만들어서 객체를 반환 ! 

모듈에 있는 것들을 하나씩 공개할때는 exports를 썼지만, 공개하고 싶은 것들을 모든 객체를 외부에 공개할때는 module.exports = 공개하고 싶은 객체, 로 쓴다! 

 

<코어 모듈>

node.js에서 내가 직접 모듈을 만들 수도 있지, 이미 만들어져 있는 모듈을 잘 활용하는 것도 중요하다. 

이미 만들어져 있는 모듈은 2개로 분류할 수 있다. 

(1) 코어 모듈 = node라는 실행파일에 이미 포함되어 있는 모듈, node만 설치하면 사용 가능

(2) 서드 파티 모듈 = 여러 개발자 third party 제 3자가 만들어서 인터넷 저장소에 올려놓은 모듈

fs = file system, 파일이나 디렉토리 작업을 할때 필요한 모듈로 대표적인 코어 모듈이다. 

fs모듈의 readdirSync 함수는 디렉토리 안에 있는 모든 파일목록들이 배열 형태로 리해준다. 

디렉토리에 있는 파일 이름들이 잘 출력되는 것을 확인해볼 수 있다. 

writerFileSync 함수를 활용하면 첫번째 인자인 'newfile'이라는 이름의 파일을 만들고, 파일 안에 두번째 인자인 'Hello Node.js'라고 적어줄 수 있다. 

os = operating system의 준말, os 코어 모듈을 사용하면 운영체제에 관한 정보를 가져올 수 있다.

node.js를 활용하면 서버의 여러 정보들도 자바스크립트로 제어할 수 있게 된다. 

 

<Node.js와 브라우저의 차이>

node.js = 자바스크립트 실행환경 (시각적 표현 필요 X : UI 관련 API X,  window & documnet 객체 X, 컴퓨터 제어 API O)

크롬, 사파리 = 웹브라우저 (시각적 표현 필요 : UI 관련 API O, window & documnet 객체 O, 컴퓨터 제어 API X)

=> 제공하는 api (application programming interface) 가 다르다. 

* API = 특정 환경에서 자유롭게 가져다 쓸 수 있는 함수나 객체 등을 의미 

=> 자바스크립트를 실행하는 엔진이 다르다. 

=> 자바스크립트 표준 문법을 각 브라우저마다 얼만큼 지원하는지 확인하는 과정이 필요하다!