-
#1. 노드 간단하게 살펴보기■ Front-End/- Node.js 2019. 5. 1. 00:49
참고 : Do it! Node.js 프로그래밍
http://www.yes24.com/Product/goods/32442876
전역 객체(Global Object)
전역 객체 이름 설명 console 콘솔 창에 결과를 보여주는 객체 process 프로세스의 실행에 대한 정보를 다루는 객체 exports 모듈을 다루는 객체
1. console
(1) console.dir(object)
- 자바스크립트 객체들의 속성들을 출력한다.
예)
var Person = {name:"강동원", age:39}; console.dir(Person);
결과 값)
(2) console.time(id), console.timeEnd(id)
- 실행 시간을 측정하기 위한 시작 시간과 끝 시간을 기록한다.
예)
var result = 0; console.time("duration_sum"); for(var i=0; i<=1000; i++) { result += i; } console.timeEnd("duration_sum");
결과 값)
duration_sum: 0.221ms
(3) console.log("%s, %s", __filename, __dirname);
- __filename : 실행한 파일의 이름을 출력한다. 파일의 전체 경로가 출력된다.
- __dirname : 실행한 파일이 들어 있는 폴더를 출력한다. 폴더의 전체 경로가 출력된다.
예)
console.log("현재 실행한 파일의 이름 : %s", __filename); console.log("현재 실행한 파일의 PATH : %s", __dirname);
결과 값)
현재 실행한 파일의 이름 : /Users/test/brackets-nodejs/NodeExample1/ch02_test1.js
현재 실행한 파일의 PATH : /Users/test/brackets-nodejs/NodeExample1
2. process 객체
프로그램을 실행했을 때 만들어지는 프로세스 정보를 다루는 객체이다.
process 객체의 주요 속성과 메소드
속성/메소드 이름 설명 argv 프로세스를 실행할 때 전달되는 파라미터(매개변수) 정보 env 환경 변수 정보 exit() 프로세스를 끝내는 메소드
3. exports 객체
모듈 파일을 불러와서 사용하기 위해 쓰는 객체
모듈
독립적인 기능을 별도로 분리한 파일
예)
main.js
var module1 = require('module1'); module1.add();
module1.js
exports.add = function(a,b) { return a+b; }
exports VS module.exports
exports
여러 개의 변수나 함수를 각각의 속성으로 추가할 수 있다.
예)
exports.add = function(a,b) { return a+b; }; exports.multiply = function(a,b) { return a*b; };
main.js 파일에서 사용할 때
var calc = require('./calc'); console.log('모듈로 분리한 후 - calc.add 함수 호출 결과 : %d', calc.add(10, 10));
module.exports
하나의 변수나 함수 또는 객체를 직접 할당한다.
예)
var calc = {}; cals.add = function(a,b) { return a+b; }; calc.multiply = function(a,b) { return a*b; }; module.exports = calc;
main.js 파일에서 사용할 때
var calc = require('./calc'); console.log('모듈로 분리한 후 - calc.add 함수 호출 결과 : %d', calc.add(10, 10));
외장 모듈 사용하기
npm 패키지를 사용해서 다른 사람들이 만든 모듈을 이용할 수 있다.
NPM(Node Package Manager)
다른 사람들이 만든 노드 패키지를 다운로드하여 설치할 수 있도록 도와주는 프로그램
npm으로 설치된 패키지들은 'node_modules'라는 폴더 안에 설치된다.
메인 파일이 실행될 때, 먼저 현재 폴더에 'node_modules' 폴더가 있는지 확인하고, 만약 없다면 상위 폴더를 순차적으로 검색한다.
따라서, 모든 프로젝트에 외부 패키지를 적용하고 싶을 땐 'node_modules' 폴더를 프로젝트의 상위 폴더로 이동하면 된다.
또, 프로그램에 설치된 외부 패키지 수가 많은 경우, 'package.json' 파일 안에 설치한 패키지들의 정보를 넣고 'npm init'을 입력하고 실행하면 프로그램에 필요한 외부 패키지들을 모두 다운받아 설치한다.
내장 모듈 사용하기
(1) os 모듈
시스템 정보들을 알려주는 모듈
메소드 이름 설명 hostname() 운영체제의 호스트 이름을 알려준다. totalmem() 시스템의 전체 메모리 용량을 알려준다. freemem() 시스템에서 사용 가능한 메모리 용량을 알려준다. cpus() CPU 정보를 알려준다. networkInterfaces() 네트워크 인터페이스 정보를 담은 배열 객체를 반환한다. 예)
var os = require('os'); console.log("시스템의 hostname : %s", os.hostname()); console.log("시스템의 메모리 : %d / %d", os.freemem(), os.totalmem()); console.log("시스템의 CPU 정보\n"); console.log(os.cpus()); console.log("시스템의 네트워크 인터페이스 정보\n"); console.log(os.networkInterfaces());
결과 값)
시스템의 hostname : HYUNui-MacBook-Pro-2.local
시스템의 메모리 : 49233920 / 17179869184
시스템의 CPU 정보
[ { model: 'Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz',
speed: 2800,
times:
...]
시스템의 네트워크 인터페이스 정보
{ lo0:
[ { address: '127.0.0.1',
netmask: '255.0.0.0',
family: 'IPv4',
mac: '00:00:00:00:00:00',
internal: true,
cidr: '127.0.0.1/8' },
....
]
}
(2) path 모듈
파일 path를 다룰 때 필요한 메소드를 제공하는 모듈이다.
메소드 이름 설명 join() 여러 개의 이름들을 모두 합쳐 하나의 파일 패스로 만들어 준다.
파일 패스를 완성할 때 구분자 등을 알아서 조정한다.
dirname() 파일 패스에서 디렉터리 이름을 반환한다. basename() 파일 패스에서 파일의 확장자를 제외한 이름을 반환한다. extname() 파일 패스에서 파일의 확장자를 반환한다. 예)
var path = require('path'); // 디렉터리 이름 합치기 var directories = ["users", "mike", "docs"]; var docsDirectory = directories.join(path.sep); console.log("문서 디렉터리 : %s", docsDirectory); // 디렉터리 이름과 파일 이름 합치기 var curPath = path.join('/Users/mike', 'notepad.exe'); console.log('파일 패스 : %s', curPath); // 패스에서 디렉터리, 파일 이름, 확장자 구별하기 var filename = "/Users/mike/notepad.exe"; var dirname = path.dirname(filename); var basename = path.basename(filename); var extname = path.extname(filename); console.log("디렉터리 : %s, 파일 이름: %s, 확장자: %s", dirname, basename, extname);
결과 값)
'■ Front-End > - Node.js' 카테고리의 다른 글
gyp: No Xcode or CLT version detected! 에러 해결하기 (0) 2020.04.02 #5-1. http 모듈을 이용한 웹 서버 만들기 (0) 2019.06.26 # 연습문제 1 (0) 2019.06.25 #4. 노드의 기본 기능 알아보기 (0) 2019.06.25 #2-3. 노드의 자바스크립트와 친해지기 (0) 2019.05.09