개발스토리

노드 기능 본문

node.js

노드 기능

무루뭉 2020. 12. 5. 02:18

REPL 사용하기

  • 자바스크립트는 스크립트 언어이므로 미리 컴파일을 하지 않아도 즉석에서 코드를 실행할 수 있다.
  • 입력한 코드를 읽고(Read), 해석하고(Eval), 결과물을 반환하고(Print), 종료할 때까지 반복한다(Loop)고 해서 REPL이라고 부른다.

VS Code에서 터미널을 키자.

$ node //콘솔에서 REPL로 들어가는 명령어
> const str = 'hello';
> undefined
> console.log(str);
hello
undefined
>
  • 위와 같이 출력되면 성공이다. 입력한 코드를 REPL이 읽고 해석한 뒤 바로 결과물을 출력했다. 그리고 종료되기 전까지 입력을 기다린다. 종료하려면 CTRL + C를 두번 누르면 된다.

  • REPL은 한두 줄 짜리 코드를 테스트해보는 용도로는 좋지만 여러 줄의 코드를 실행하는 것은 불편하다.

    • 긴 코드의 경우 자바스크립트 파일로 만든 후 파일을 통째로 실행하자.
    • 자바스크립트 파일을 만들 때/, , >, <, : 등 의 문자들은 피해서 이름을 짓자.

모듈로 만들기

  • 노드는 코드를 모듈로 만들 수 있다는 점에서 브라우저의 자바스크립트와 다르다.
    • 모듈이란 특정한 기능을 하는 함수나 변수들의 집합이다.
    • 모듈은 자체로도 하나의 프로그램이면서 다른 프로그램의 부품으로도 사용 가능하다.
    • 모듈로 만들어두면 여러 프로그램에 해당 모듈을 재사용할 수 있다.

실제로 모듈을 만들어보자. 모듈이 될 파일과 모듈을 불러와서 사용할 파일이 필요하다.

var.js와 func.js, index.js를 같은 폴더에 만들자.

// var.js
const odd = '홀수';
const even = '짝수';

module.exports = {
    odd,
    even,
};
// func.js
const {odd, even} = require('./var');

function checkOddOrEven(num){
    if(num % 2){
        return odd;
    }
    return even;
}

module.exports = checkOddOrEven;
  • require 함수 안에 불러올 모듈의 경로를 적는다. 다른 폴더에 있는 파일도 모듈로 사용이 가능하다.
  • var.js의 module.exports에 담겨 있던 객체를 불러와 func.js에서 사용하는 모습이다. 그리고 다시 module.exports에 함수를 대입했다. 이렇게 다른 모듈을 사용하는 파일을 다시 모듈로 만들 수 있다.
    • module.exports에는 객체만 대입해야 하는 것이 아니라 함수나 변수를 대입해도 된다.

마지막으로 index.js를 작성한다.

//index.js
const {odd, even} = require('./var');
const checkNumber = require('./func');

function checkStringOddEven(str){
    if(str.length % 2){
        return odd;
    }
    return even;
}

console.log(checkNumber(10)); //짝수
console.log(checkStringOddEven('hello'));//홀수
  • index.js는 var.js와 func.js를 모두 참조한다. 모듈 하나가 여러 모듈을 사용할 수 있다.
  • 모듈로부터 값을 불러올 때 변수 이름을 다르게 지정할 수 있다.

ES2015가 도입되면서 자바스크립트도 자체 모듈 시스템 문법이 생겼다.

위의 func.js를 바꿔보겠다.

import {odd, even} from './var';

function chekcOddOrEven(num){
    if(num%2){
        return odd;
    }
    return even;
}

export default checkOddOrEven;
  • 하지만 파일의 확장자를 mjs로 지정해야 하는 제한이 있다.
  • js에서 확장자를 사용하면서 위 모듈 방법을 사용하려면 package.json에 type:"module" 속성을 추가하자.

*** require 함수나 module 객체는 따로 선언하지 않았음에도 사용할 수 있다. 노드에서 기본적으로 제공하는 내장 객체 이기 때문이다. **

 

 

 

 

본 내용은 Node.js 교과서 (길벗 출판사) 개정 2판의 내용을 기반으로 작성되었습니다.

'node.js' 카테고리의 다른 글

파일 시스템 접근하기  (0) 2020.12.05
노드 내장 객체  (0) 2020.12.05
프론트엔드 자바스크립트  (0) 2020.12.04
ES6(3)  (0) 2020.12.04
ES6(2)  (0) 2020.12.03
Comments