Node.js 학습_REPL 사용 / JS파일 실행 / 모듈 생성 /

Node.js 학습_REPL 사용 / JS파일 실행 / 모듈 생성 /

728x90

반응형

# REPL 사용

자바스크립트는 스크립트 언어라 즉석에서 코드를 실행할 수 있다.

REPL이라는 콘솔을 제공 (Read / Evaluate / Print / Loop)

윈도에서는 명령 프롬프트, 맥이나 리눅스에서는 터미널에 node 입력 (cmd 또는 VS Code 파워쉘(Ctrl + `(백틱))에서 node 입력 / node exit의 경우 .exit 입력 또는 Ctrl + C 입력)

repl의 경우 한줄 짜리 코드 실행 등에만 사용 (평소에는 거의 사용하는일 없음)

# JS 파일을 만들어서 실행하기

자바스크립트 파일을 만들어 통째로 코드를 실행하는 방법

아무 폴더(디렉터리)에서 helloWorld.js 생성 node [자바스크립트 파일 경로]로 실행 실행 결괏값이 출력됨

VS Code 파워쉘 -> cmd 변경 (아래와 같이 우측 하단 + 클릭하여 cmd로 변경) (파워쉘 사용의 경우 추후 문제발생 가능성 있다고 함)

# 모듈 생성 (module.exports / require)

모듈 : 특정한 기능을 하는 함수나 변수들의 집합

모듈로 만들면 여러 프로그램에서 재사용 가능

module.exports : 모듈로 생성

const 변수명 = require('경로'); 로 받아서 사용.

객체를 넘겨서 사용할 경우

배열을 넘겨서 사용할 경우

구조분해 할당도 가능하여 아래와 같이 func.js에서 사용 가능

# 기존 const value = require('./var'); console.log(value); # 구조 분해 할당 const { odd, even } = require('./var');

module.exports로 넘겨받은걸 또 module.exports하여 다른쪽으로 넘길수 있음.

const { odd, even } = require('./var'); function checkOddOrEven(number) { if (number % 2 ) { return odd; } else { return even; } } module.exports = { checkOddOrEven, odd, even, };

module.exports는 파일에서 단 한번만 사용해야 함.

var.js

const odd = '홀수입니다.'; const even = '짝수입니다.'; module.exports = {odd, even};

func.js

const { odd, even } = require('./var'); function checkOddOrEven(number) { if (number % 2 ) { return odd; } else { return even; } } module.exports = checkOddOrEven;

index.js

const { odd, even } = require('./var'); // 구조분해 할당 시 속성명, 변수명 동일하게 해야 됨 const checkNumber = require('./func'); // 변수명은 임의로 설정 가능 function checkStringOddOrEven(str) { if (str.length % 2) { return odd; } else { return even; } } console.log(checkNumber(10)); console.log(checkStringOddOrEven('hello'));

ES2015 모듈_자바스크립트 자체 모듈 시스템 문법이 생김. 아직 노드에서의 지원은 완벽하지 않음. mjs 확장자를 사용해야 함. 크게는 require 대신 import / module.exports 대신 export default를 쓰는 것으로 바뀜

func.mjs

import { odd, even } from './var'; function checkOddOrEven(num) { if (num % 2 ) { return odd; } else { return even; } } export default checkOddOrEven;

728x90

반응형

from http://dlagusgh1.tistory.com/832 by ccl(A) rewrite - 2021-10-02 16:01:40