Notice
Recent Posts
Recent Comments
Link
개발스토리
노드 기능 본문
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