* REPL(Read-Evaluate-Print Loop)
REPL은 자바스크립트 표현식을 읽고, 평가하고, 출력해 주는 것을 반복해 주는 환경이다.
노드에서 제공하는 REPL 콘솔을 통해 간단한 자바스크립트 코드를 테스트할 수 있다.
* JS 파일 실행
아래 helloWorld.js 파일을 실행하려면 'node helloWorld'로 실행하면 된다.
function helloWorld(){
console.log('Hello World'); // Hello World 출력하고
helloNode(); // Hello Node를 출력하는 함수 호출
}
function helloNode(){
console.log('Hello Node');
}
helloWorld();
node [자바스크립트 파일 경로]
* 모듈
노드는 자바스크립트 코드를 모듈로 만들 수 있다.
파일 끝에 module.exports로 값을 지정하여 모듈로 만들 수 있고, require로 모듈을 가져올 수 있다.
2개의 파일을 모듈화 하여 사용하는 예시 코드를 보자.
var.js
아래는 var.js 파일의 객체를 모듈로 만드는 코드이다.
'홀수입니다.', '짝수입니다.' 문자열이 들어있는 odd와 even을 다른 파일에서도 사용할 수 있게 모듈화 하였다.
const odd = '홀수입니다.'; // 문자열 정의
const even = '짝수입니다.'; // 문자열 정의
module.exports = { // 홀수와 짝수를 내보내는 모듈 정의
odd, // odd 문자열 내보냄
even, // even 문자열 내보냄
};
위 코드처럼 module.exports로 모듈을 만들 수 있다.
exports.odd = '홀수입니다.'
exports.even = '짝수입니다.'
위 var.js 코드를 exports를 사용하여 이렇게 코드를 짜도 동일하게 실행된다.
하지만 exports는 속성명과 값을 가진 객체에서만 사용가능하다.
exports가 module.exports를 참조하는 참조관계인데, exports에 객체의 속성이 아닌 다른 것을 대답하면 참조관계가 깨지기 때문이다.
func.js
require 함수로 var.js 파일에서 모듈을 불러오고, func.js 파일의 함수를 모듈로 만드는 코드이다.
const {odd, even} = require('./var') // 현재 디렉토리의 var.js에서 odd와 even을 가져옴
// 만약 var.js 파일이 다른 디렉토리에 있으면 디렉토리 경로나 모듈 이름을 사용
function checkOddOrEven(num){ // 홀수인지 짝수인지 확인하는 함수 정의
if(num % 2){ // 홀수이면
return odd; // odd에 저장된 문자열 반환
}
return even; // 짝수면 even에 저장된 문자열 반환
}
module.exports = checkOddOrEven; // 함수를 모듈로 내보냄
// 다른 파일에서 require 함수를 사용해서 이 모듈을 불러와서 함수 사용 가능
var.js 파일이 현재 파일과 같은 디렉터리에 있기에 .js를 생략하고 ./var라고 할 수 있다.
만약 var.js 파일이 다른 디렉터리에 있으면 디렉터리 경로나 모듈 이름을 사용하여 불러와야 한다.
index.js
최종 실행 파일이다.
const{odd, even} = require('./var'); // var.ㅓjs에서 odd와 even 가져옴
const checkNumber = require('./func'); // func.js에서 checkNumber 함수 가져옴
function checkStringOddOrEven(str){ // 문자열 길이가 홀수인지 짝수인지 확인하는 함수 정의
if(str.length % 2){ // 홀수이면
return odd; // odd 문자열 반환
}
return even; // 짝수이면 even 문자열 반환
}
console.log(checkNumber(10)); // 숫자를 입력받아 홀수인지 짝수인지 확인하는 함수 호출하여 결과 출력
console.log(checkStringOddOrEven('hello')); // 문자열 입력받음
출력
* 내장 모듈
노드 내장 모듈은 경로 대신 이름만 적어줘도 가져올 수 있다.
1. os
os 모듈은 운영체제의 정보를 담고 있다.
os 모듈 메서드
아래는 os 모듈의 다양한 메서드를 통해 운영체제의 정보를 출력하는 코드 예시.
const os = require('os');
console.log('운영체제 정보---------------------------------');
console.log('os.arch():', os.arch());
console.log('os.platform():', os.platform());
console.log('os.type():', os.type());
console.log('os.uptime():', os.uptime());
console.log('os.hostname():', os.hostname());
console.log('os.release():', os.release());
console.log('경로------------------------------------------');
console.log('os.homedir():', os.homedir());
console.log('os.tmpdir():', os.tmpdir());
console.log('cpu 정보--------------------------------------');
console.log('os.cpus():', os.cpus());
console.log('os.cpus().length:', os.cpus().length);
console.log('메모리 정보-----------------------------------');
console.log('os.freemem():', os.freemem());
console.log('os.totalmem():', os.totalmem());
운영체제 정보 출력
2. path
폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈이다.
path 모듈 메서드
아래는 path 모듈의 다양한 메서드로 폴더와 파일의 경로 정보 및 조작을 하는 코드 예시.
const path = require('path');
const string = __filename;
console.log('path.sep:', path.sep); // 경로 구분자
console.log('path.delimiter:', path.delimiter); // 환경변수 구분자
console.log('------------------------------');
console.log('path.dirname():', path.dirname(string)); // 파일이 위치한 폴더 경로
console.log('path.extname():', path.extname(string)); // 파일 확장자
console.log('path.basename():', path.basename(string)); // 파일 이름(확장자 포함)
console.log('path.basename():', path.basename(string, path.extname(string))); // 파일 이름(확장자 미포함)
console.log('------------------------------');
console.log('path.parse()', path.parse(string)); // 경로를 객체로 분리
console.log('path.format():', path.format({ // 분리된 객체를 파일 경로로 합침
dir: 'C:\\users\\zerocho',
name: 'path',
ext: '.js',
}));
console.log('path.normalize():', path.normalize('C://users\\\\zerocho\\\path.js')); // 경로 표준화
console.log('------------------------------');
console.log('path.isAbsolute():', path.isAbsolute('C:\\')); // 절대경로인지 상대경로인지 알려줌
console.log('path.isAbsolute():', path.isAbsolute('./home'));
console.log('------------------------------');
console.log('path.relative():', path.relative('C:\\users\\zerocho\\path.js', 'C:\\')); // 첫번째 경로에서 두번째 경로로 가는법
console.log('path.join():', path.join(__dirname, '..', '..', '/users', '.', '/zerocho')); //하나의 경로로 합침
console.log('path.resolve():', path.resolve(__dirname, '..', 'users', '.', '/zerocho'));
출력
댓글