반응형

노드 REPL 란?

REPL은 read, eval, print, loop의 약자입니다. repl를 이용하면 자바스크립트 및 node 명령을 빠르게 테스트할 수 있습니다.  간단히 자바스크립트 코드를 테스트하고 싶다면 굳이 브라우저의 개발자 모드의 콘솔 대신 REPL모드를 이용할 수 있습니다.


REPL 모드 실행하기

실행할 스크립트 없이 node 명령을 입력하면 Node가 REPL 세션을 시작합니다.

node를 입력하면 REPL세션이 시작하고 자바스크립트를 입력할 수 있습니다.

자바스크립트 코드 Math.randon()을 입력했습니다. 그런 다음 엔터를 누르면 Node가 줄을 읽고 평가하고 결과를 출력한 다음 대기 상태로 돌아갑니다. REPL은 이러한 흐름에서 이름을 가져왔습니다. 라인을 읽고, 평가하고, 인쇄하고, 이과정을 반복합니다.


REPL 출력 값?

결과를 인쇄하기 위해서 다른 추가 명령을 내릴 필요가 없습니다. 노드는 입력한 각 줄의 결과만 인쇄합니다. 일부 행이 결과를 반환하지 않으면 undefined가 출력됩니다.

예를 들어 변수를 정의하고, 10을 할당했습니다. 그리고 enter를 누르면 undefined가 출력됩니다. 이것은 자바스크립트 명령문이기 때문입니다.

반면에 자바스크립트 표현식을 입력해 보겠습니다.

부울 표현식을 입력했습니다. 이 라인은 자바스크립트 표현식이기 때문에 REPL은 결과를 출력해 주고 있습니다.


REPL 여러 줄 입력하기

테스트해야하는 표현식에 여러 줄이 필요할 수 있습니다. 우선 기존 세션을 지우고 새로 시작하기 위해 ctrl + l을 누르겠습니다.

이제 오늘 날짜를 생성하는 함수를 여러 줄로 정의해 보겠습니다.

function getToday() { 까지 입력하고 에터를 누르면 …으로 표시됩니다. node가 라인이 아직 완료되지 않았음을 감지하고 다중 라인 모드로 전환됐다는 표시입니다.

함수 바디를 작성하고 } 괄호를 닫아주면 node는 코드가 실행할 수 있다는 것을 알아차리고 다중 라인 모드가 종료됩니다.

 

이 REPL 다중 라인 모드는 제한적입니다. 예를 들어 첫 번째 라인이 실수했다는 것을 나중에 알아차려도 1행으로 돌아가 편집을 할 수 없습니다. 또한 동일한 다중 라인 모드 세션에서 여러 표현식을 입력할 수 없습니다. 다행히 REPL내부에 더 많은 기능으 갖춘 편집기가 있습니다.

 

.editor 명령

.editor를 사용하면 편리하게 여러 줄을 입력할 수 있습니다.

에디터를 사용해 함수 두 개를 동시에 입력하였습니다. 또한 클립보드에서 코드를 붙여 넣을 수 있습니다. 입력을 다하면 ctrl + d를 눌러 빠져나올 수 있습니다.

편집기에서 정의한 모든 함수를 REPL세션에서 사용이 가능합니다.


REPL 명령들

.editor 명령은 REPL명령이며 다른 명령들도 있습니다.

 

.help: 명령어 확인

.help명령을 사용하면 REPL 명령의 목록을 확인할 수 있습니다.

.break .clear : 이상한 상황 탈출

.break 혹은 .clear를 사용하면 REPL세션 중 이상한 상황에서 벗어날 수 있습니다. 예를 들어 여러 줄을 입력하고 있다가 닫는 중괄호가 몇 개인지 헷갈린다면. break 명령을 사용해서 코드를 완전히 삭제할 수 있습니다.

.break를 사용하면 간단한 상황을 벗어나기 위해 전체 세션을 종료하지 않아도 됩니다.

 

.exit : 종료하기 ctrl + d

.exit명령은 REPL를 종료할 때 사용합니다. 대신에 단순히 ctrl+d를 눌러도 종료됩니다.

 

.save : 파일로 저장하기

.load 및 .save명령을 사용하면 REPL내에서 외부 node 스크립트를 생성하고 사용할 수 있습니다.

함수 a, 와 add를 만들었고, .save 명령어를 사용해서 myfunction.js파일에 저장해 주었습니다. myfunction.js파일을 확인해 보면 잘 저장된 걸 확인할 수 있습니다.

.load : 파일 불러오기

이제 .load 명령어를 사용해서 저장된 파일을 새로운 REPL 세션에서 불러와 보겠습니다.

.load를 사용해서 파일을 읽었고 파일에 정의된 함수를 호출할 수 있습니다.

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기