터미널(콘솔)에서 node를 입력하면 직접 자바스크립트 코드를 입력 할 수 있음
$ node
> const str = 'Hello world, heelo node';
undefined
> console.log(str);
Hello World, hello node
undefined
>
helloWorld.js를 실행하기
$ node helloWorld
var.js
const add = '홀수입니다';
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;
index.js
const { odd, even } = require('./var');
const checkNumber = require('./func');
function checkStringOddOrEven(str) {
if(str.length % 2) { // 홀수 일 떄
return odd;
}
return even;
}
console.log(checkNumber(10));
console.log(checkStringOddOrEven('hello'));
$ node index
짝수입니다
홀수입니다
노드에서 import, export default (es6) 사용시 파일 확장자를 mjs로 지정해야 하며, 실행시 node --experimental-modules를 입력 해주어야 하는 제한이 있음
브라우저의 window 객체와 같은 전역 객체이며, node 에는 window가 없으므로 window 의 역할을 대체함 global 객체에는 매우 많은 속성이 있음 (global 객체 남용 주의)
브라우저의 console과 동일
setTimeout(func, ms) : ms초 이후에 func 함수 실행
setInterval(func, ms) : ms초 마다 func 함수 실행
setImmediate(func) : func를 즉시 실행
clearTimeout : setTimeout을 취소
clearInterval : setInterval을 취소
clearImmediate : setImmediate를 취소
var.js
exports.odd = '홀수입니다';
exports.even = '짝수입니다';
index.js
const { odd, even } = require('./var');
console.log(odd);
console.log(even);
홀수입니다
짝수입니다
$ node
> process.version
v10.0.0 // 설치된 노드의 버전
> process.arch
x64 // 프로세서 아키텍처 정보입니다.
> process.platform
win32 // 운영체제 플랫폼
> process.pid
14736 // 현재 프로세서의 아이디
> process.uptime()
199.36 // 프로세스가 시작된 후 흐른 시간(초)
> process.execPath
C:\\Program Files\\nodejs\\node.exe // 노드의 경로
> process.cwd()
C:\\Users\\zerocho // 현재 프로세스가 실행되는 위치
> process.cpuUsage()
{ user: 390000, system: 203000 } // 현재 cpu 사용량
환경 변수(environment variable) 가 출력됨
비밀번호, api secret key 등 코드에 노출되기 민감한 정보를 저장하는 공간으로도 사용
브라우저와 달리 노드는 운영체제 정보를 가져 올수 있음
process 객체와 겹치는 부분이 있음
폴더와 파일의 경로를 쉽게 조작하도록 도와주는 모듈(os 별로 경로 구분자가 다름)
querystring.parse : url의 query 부분을 자바스크립트 객체로 분해
querystring.stringify : 객체를 문자열로 조립
복호화 할 수 없는 암호화 방식
pbkdf2.js
const crypto = require('crypto');
crypto.randomBytes(64, (err, buf) => {
const salt = buf.toString('base64');
console.log('salt:', salt);
crypto.pbkdf2('비밀번호', salt, 100000, 64, 'sha512', (err, key) => {
console.log('password:', key.toString('base64'));
});
});
node pbkdf2
salt: OnesIj8wznyKghava1......
password: b4/FpSrZulVY28trzNX.........
암호화된 문자열을 복호화 할 수 있음(키를 사용)
cipher.js
const crypto = require('crypto');
const cipher = crypto.createCipher('aes-256-cbc', '7열쇠7');
let result = cipher.update('?암호?', 'utf8', 'base64');
result += cipher.final('base64');
console.log('암호화:', result);
const decipher = crypto.createDecipher('aes-256-cbc', '7열쇠7');
let result2 = decipher.update(result, 'base64', 'utf8');
result2 += decipher.final('utf8');
console.log('복호화:', result2);
node cipher
암호화: Jwekljrlsdjvlzjsdlkfjslkjtweljrlksdfjlk
복호화: ?암호?