[ node.js 개발일지 2일 ]
Table of contents
#0 Concept
#1 Develop
#0. Concept
주로 이용되는 전역 객체, 모듈
- Node.js 에서 자주 이용되는 전역객체
1. console 객체
console.log(): 콘솔에 로그 메시지 출력
console.time(label) : 시간 측정 시작
console.timeEnd(label) : 시간 측정 종료
2. Process 객체
1) 속성
process.argv: 프로그램의 매개변수 정보
process.env : 컴퓨터 환경과 관련된 정보
process.version : Node.js의 버전
process.versions : Node.js 프로세스에서 사용하는 모듈들의 버전
process.arch : 프로세서의 아키텍처
process.platform : 플랫폼의 정보
2) 메소드
process.exit() : 프로그램 종료
process.memoryUsage() : 메모리 사용 정보
process.uptime() : 현재 프로그램이 실행된 시간
3. Exports 객체 : exports객체의 속성이나 메소드로 정의
1) Example test.js
exports.double = function(r) {
return r * r;
};
exports.plus = function(r) {
return r + r;
};
2) Example main.js
var caculator = require('./test.js');
console.log('Double value is '+ caculator.double(3));
console.log('Plus value is ' + caculator.plus(3));
- Module
1. OS 모듈
os.tmpdir() : 임시 저장 폴더의 위치
os.endianness() : CPU의 endianness(BE 또는 LE)
os.hostname() : 호스트(컴퓨터) 이름
os.type() : 운영체제 이름
os.platform() : 운영체제 플랫폼
os.arch() : 운영체제 아키텍처
os.release() : 운영체제 버전
os.uptime() : 운영체제가 실행된 시간
os.loadavg() : 로드 에버리지 정보를 담은 배열
os.totalmem() : 시스템의 총 메모리
os.freemem() : 시스템의 가용 메모리
os.cpus() : CPU의 정보를 담은 객체. CPU의 세부 정보를 반환합니다.
os.networkInterfaces() : 네트워크 인터페이스 정보를 담은 배열
2. Utility 모듈
util.format(format, [...]) : console.log() 메소드와 비슷한 기능이지만 console.log()는 화면에 출력하고 util.format은 문자열로 반환합니다. printf와 같은 형식으로 첫 아규먼트를 사용해서 포맷팅된 문자열을 반환합니다. 플레이스 홀더는 다음과 같은 아규먼트의 값으로 대체됩니다.
%s : 문자열
%d : 숫자(정수부터 소수까지 표현 가능)
%j : JSON
% : 퍼센트 기호('%'). 이 기호는 플레이스홀더를 사용하지 않습니다.
util.debug(string) : 프로그램의 실행을 멈추고 즉각적으로 string을 출력합니다.
util.log(string) : 타임스탬프 시간과 함께 string을 출력합니다.
util.isArray(object) : 주어진 object가 Array이면 true, 아니면 false를 리턴합니다.
util.isRegExp(object) : 주어진 object가 RegExp이면 true, 아니면 false를 리턴합니다.
util.isDate(object) : 주어진 object가 Date이면 true, 아니면 false를 리턴합니다.
util.isError(object) : 주어진 object가 Error이면 true, 아니면 false를 리턴합니다.
Example
var util = require('util');
var data = util.format('%d, %s, %j', 6, 'chapter', {cotent: 'module'});
console.log(data);
util.log('message');
3. File System 모듈
//option은 인코딩 방식으로 주로 UTF-8 이용
fs.readFile(filename, [options], callback) : filename의 파일을 [options]의 방식으로 읽은 후 callback으로 전달된 함수를 호출합니다. (비동기적)
fs.readFileSync(filename, [options]) : filename의 파일을 [options]의 방식으로 읽은 후 문자열을 반환합니다.(동기적)
fs.writeFile(filename, data, [options], callback) : filename의 파일에 [options]의 방식으로 data 내용을 쓴 후 callback 함수를 호출합니다.(비동기적)
fs.writeFileSync(filename, data, [options]) : filename의 파일에 [options]의 방식으로 data 내용을 씁니다.(동기적)
Example#0
//main.js
var fs = require('fs');
// 비동기적 읽기 ( 파일을 읽으면서 타작업 동시 수행 가능 및 파일 읽기 완료 시, 매개변수 callback으로 전달한 함수 호출( 마지막 인수는 수행 완료 시, 실행할 콜백 함수 ))
fs.readFile('text.txt', 'utf8', function(err, data) {
console.log('비동기적 읽기 ' + data);
});
// 동기적 읽기 ( 파일을 읽으면서 타작업 불가 )
var text = fs.readFileSync('text.txt', 'utf8');
console.log('동기적 읽기 ' + text);
Example#1
// main.js
var fs = require('fs');
var data = 'fs.writeFile test';
fs.writeFile('text1.txt', data, 'utf8', function(err) {
console.log('비동기적 파일 쓰기 완료');
});
fs.writeFileSync('text2.txt', data, 'utf8');
console.log('동기적 파일 쓰기 완료');
3. Event 모듈
//events 객체의 메소드
emitter.addListener(event, listener) : on() 메소드와 같습니다. 이벤트를 생성하는 메소드입니다.
emitter.on(event, listener) : addListener()과 동일합니다. 이벤트를 생성하는 메소드입니다.
emitter.once(event, listener) : 이벤트를 한 번만 연결한 후 제거합니다.
emitter.removeListener(event, listener) : 특정 이벤트의 특정 이벤트 핸들러를 제거합니다. 이 메소드를 이용해 리스너를 삭제하면 리스너 배열의 인덱스가 갱신되니 주의해야 합니다.
emitter.removeAllListeners([event]) : 모든 이벤트 핸들러를 제거합니다.
emitter.setMaxListeners(n) : n으로 한 이벤트에 최대허용 개수를 정해줍니다. node.js는 기본값으로 한 이벤트에 10개의 이벤트 핸들러를 작성할 수 있는데, 11개 이상을 사용하고 싶다면 n값을 넘겨주면 됩니다. n값으로 0을 넘겨 주면 연결 개수 제한이 사라집니다.
emitter.emit(eventName[, ...args]) : 이벤트를 발생시킵니다.
Example#0 생성
var EventEmitter = require('events');
var custom_event = new EventEmitter();
custom_event.on('call', function() {
console.log('이벤트 콜');
});
custom_event.emit('call');
Example#1 이벤트 제거
var EventEmitter = require('events');
var custom_event = new EventEmitter();
custom_event.on('call', function() {
console.log('이벤트 콜');
});
custom_event.removeAllListeners();
custom_event.emit('call'); //이벤트 리스너 제거했기때문에 실행 후에도 log 미존재
- 가독성 높은, 간결한 코드를 위한 util.inherits()를 이용한 상속
1. 전통적인 상속 방법
function Foo() {
// 코드
}
Foo.prototype = {
bar: function() {
console.log('Foo_bar 실행');
}
};
function Bar() {
}
Bar.prototype = Object.create(Foo.prototype);
Bar.prototype.baz = function() {
console.log('Bar_baz 실행');
};
Foo.prototype.bar();
Bar.prototype.bar();
Bar.prototype.baz();
2. util.inherits() 메소드를 이용한 상속
function Foo() {
// 코드
}
Foo.prototype = {
bar: function() {
console.log('Foo_bar 실행');
}
};
var util = require('util');
function Bar() {
}
util.inherits(Bar, Foo);
Bar.prototype.baz = function() {
console.log('Bar_baz 실행');
};
Foo.prototype.bar();
Bar.prototype.bar();
Bar.prototype.baz();
- npm 명령어
1. 원하는 모듈 찾기
npm search [모듈명]
npm info [모듈명]
2. 모듈 리스트 확인
npm list -g
- package.json ( 확장 모듈에 대한 의존성 관리, 개발자 package 공유를 위한 파일 ) 상세 설명
{
"name" : "test",
"description" : "javascript's test programming.",
"keywords" : ["util", "f", "server", "client", "browser"],
"author" : "Goorm",
"contributors" : [],
"dependencies" : [],
"repository" : {"type": "git", "url" : "git://gitbub.com/documentcloud/test.git" },
"main" : "test.js",
"version" : "1.1.6"
}
Key | Value |
name |
프로젝트 이름으로, 가장 중요합니다. 중앙 저장소에 배포할 때 version과 함께 필수 항목입니다. |
version | 프로젝트 버전을 정의합니다. 3단계 버전을 사용하며, - 로 태그 이름을 적을 수 있습니다. |
description |
프로젝트 설명으로, 문자열로 기술합니다. |
keywords |
프로젝트를 검색할 때 참조되는 키워드입니다. |
homepage |
프로젝트 홈페이지 주소입니다. |
author | 프로젝트 작성자 정보로, 한 사람만을 지정합니다. JSON 형식으로 name, email, url 옵션을 포함합니다. |
contributors | 프로젝트에 참여한 공헌자 정보로, 여러 사람을 배열로 지정할 수 있습니다. |
repository |
프로젝트의 소스 코드를 저장한 저장소의 정보입니다. 소스 코드에 참여하고자 하는 사람들에게 도움이 될 수 있습니다. 프로젝트의 홈페이지 url을 명시해서는 안 됩니다. |
scripts | 프로젝트에서 자주 실행해야 하는 명령어를 scripts로 작성해두면 npm 명령어로 실행 가능합니다. |
config | 소스 코드에서 config 필드에 있는 값을 환경 변수처럼 사용할 수 있습니다. -> 중요 환경변수 추출 시 이용 가능 |
private | 이 값을 true로 작성하면 중앙 저장소로 저장하지 않습니다. |
dependencies |
프로젝트 의존성 관리를 위한 부분입니다. 이 프로젝트가 어떤 확장 모듈을 요구하는지 정리할 수 있습니다. 일반적으로 package.json에서 가장 많은 정보가 입력되는 곳입니다. 애플리케이션을 설치할 때 이 내용을 참조하여 필요한 확장 모듈을 자동으로 설치합니다. 따라서 개발한 애플리케이션이 특정한 확장 모듈을 사용한다면 여기에 꼭 명시를 해주어야 합니다. 또한, npm install 명령은 여기에 포함된 모든 확장 모듈들을 설치하게 되어 있습니다. -> 확장 모듈 파악 |
devDependencies | 개발할 때만 의존하는 확장 모듈을 관리합니다. |
engine | 실행 가능한 노드 버전의 범위를 결정합니다. |
#1. Develop
- 개발을 쉽게~! Express 확장 모듈
Express 모듈 : http 모듈을 이용하여 웹 서버를 구축, 데이터를 표시 방식 추상화하여 개발을 쉽게 도와주는 모듈
express-generator 모듈 : 웹 서버를 구동하기 위해 필수 파일 및 폴더 구조 자동생성 모듈
+Express기반 프로젝트 초기 세팅 명령어
npm install express -g
npm install express-generator -g
express [프로젝트 디렉터리명]
cd [프로젝트 디렉터리명] && npm install // Express 기본 세팅이 이용하는 의존성 모듈 설치
cd [프로젝트 디렉터리명] && npm start
5일 CLEAR 또전했는데, 약속은 왜 이렇게 잡아놓은거죠ㅎㅗ,,앗 오타^~^ 3/13
'ETC > develop' 카테고리의 다른 글
Flutter Application Develop just For me:D#1 (0) | 2023.05.11 |
---|---|
node.js & Express Develop#3 (0) | 2021.03.16 |
node.js & Express Develop#1 (0) | 2021.03.12 |
node.js & Express Develop#0 (0) | 2021.03.11 |