주소 문자열과 요청 파라미터 다루기
url모듈의 주요 메서드
| 메소드명 | 설명 |
| parse( ) | 주소 문자열을 파싱하여 URL 객체를 만들어 줍니다 |
| format( ) | URL 객체를 주소 문자열로 변환합니다 |
var url = require('url');
var urlStr ='<https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=nodejs>';
var curUrl = url.parse(urlStr);
console.dir(curUrl);
console.log('query -> ' +curUrl.query);
var curStr = url.format(curUrl);
console.log('url -> '+ curStr);
var qs = require('querystring'); // 내가 검색한 단어 찾기 query 찾기
var params = qs.parse(curUrl.query);
console.log('검색어 : ' +params.query);

이벤트 이해하기
이벤트란?
- 비동기 방식으로 처리하기 위해 한쪽에서 다른 쪽으로 데이터 전달
- EventEmitter 사용
- 한 쪽에서 이벤트를 emit( )으로 보내고 다른 쪽에서 리스너를 등록하여 on( )으로 받음
| 메소드 명 | 설명 |
| on(event, listener) | 지정한 이벤트의 리스너를 추가합니다. |
| once(event, listener) | 지정한 이벤트의 리스너를 추가하지만 한 번 시행한 후에는 자동으로 리스너가 제거 됨 |
| removeListener(event, listener) | 지정한 이벤트에 대한 리스너를 제거합니다. |
process.on('exit',function(){
console.log('exit 이벤트 발생함.')
});
setTimeout(function(){
console.log('2초후 실행되었음');
process.exit();
},2000);// 초후에 실행 됨
console.log('2초 후에 실행될 것임');

process.on('tick',function(count){
console.log('tick 이벤트 발생함: '+count);
});
setTimeout(function(){
console.log('2초후 실행되었음');
process.emit('tick','2');
},2000);//2 초후에 실행 됨

객체를 모듈로 만들어 보기
//calc.js
//계산기 만들기
//Cacl가 프로토타입 객체로 만들어져야함
var EventEmitter = require('events').EventEmitter//import eventemitter라는 듯
var util = require('util'); //자바에서 import 같은느낌
var Calc = function(){
this.on('stop',function(){
console.log('Calc에 stop이벤트 전달됨.');
});
};
util.inherits(Calc, EventEmitter);// 상속 하는방법 뒤에가 부모 앞에가 자식
Calc.prototype.add= function(a,b){ //add 메소드 만들기
return a+b;
}
module.exports=Calc; //모듈.export에 객체 할당
//실행 js
var Calc = require('./calc'); //calc import
var calc1 = new Calc(); //객체생성
calc1.emit('stop');
console.log('Calc에 stop 이벤트 전달함.');

파일 다루기
| readFile(filename, [encoding], [callback]) | 비동기식 IO로 파일을 읽어 들임 |
| readFileSync(filename, [encoding]) | 동기식 IO로 파일을 읽어 들임 |
| writeFile(filename, data, encoding=’utf-8’, [callback]) | 비동기식 IO로 파일을 씀 |
| writeFileSync( filename, data, encoding=’utf-8’ ) | 동기식 IO로 파일을 씀 |
var fs = require('fs'); //filesystem이라는 모듈 불러오기
var data1 = fs.readFileSync('./calc2.js','utf8'); //calc2파일 내용 불러오기
console.log(data1);
fs.readFile('./calc2.js','utf8',function(err,data){//callback 함수
console.log(data);
});// 비동기 방식
//실행 결과가 동일하지만 실행 방식이 다르다 filesync파일을 읽을때 까지 대기
//다른건 기다리지 않고 그냥 넘어가고 파일을 읽었을때 함수가 실행
대부분 비동기식으로 처리함
var fs = require('fs');
fs.writeFile('./output.txt','Hello.',function(err){//output텍스트파일에 내용 쓰기
if(err){// err객체가 나오면
console.log('에러 발생.');
console.dir(err);
return;//에러가 발생하면 밑으로 내려가지 않고 끝내기 위해
}
console.log('output.txt 파일에 데이터 쓰기 완료함');
});
파일 열고 닫으면서 읽거나 쓰기
var fs = require('fs');
fs.open('./output.txt','w',function(err,fd){//오픈해줘서 callback함수를 호출
if(err){//파일 오픈시 에러 발생하면
console.dir(err);
return;
}
var buf = new Buffer('안녕\\n');
fs.write(fd,buf,0,buf.length,null,function(err,written,buffer){
if(err){//파일 쓰기시시 에러 발생하면
console.dir(err);
return;
}
console.log('파일 쓰기 완료함.')
fs.close(fd,function(){
console.log('파일 닫기 완료함');
});
});
});
버퍼 객체 사용해보기

var buffer2 = Buffer.from('Hello','utf8'); //buffer2라는 객체를 만든거임
console.log('두번째 버퍼의 길이 : '+ Buffer.byteLength(buffer2));
var str2 = buffer2.toString('utf8',0,Buffer.byteLength(buffer2));
console.log('str2:' +str2);
스트림 단위로 파일 읽고 쓰기
파일을 읽거나 쓸 때는 데이터 단위가 아닌 스트림 단위로 처리할 수도 있다. 스트림은 데이터가 전달되는 통로와 같은 개념이다.
var fs = require('fs');
var infile = fs.createReadStream('./output.txt',{flags:'r'}); //파일을 읽기 위한 스트림 객체 생성
var outfile = fs.createWriteStream('./output2.txt',{flags:'w'});// 파일을 쓰기 위한 스트림 객체 생성
infile.on('data' , function(data){
console.log('읽어들인 데이터 : ' +data);
outfile.write(data);// 읽어드린 데이터 output2.txt에 쓰기
});
infile.on('end',function(){ //끝내기
console.log('읽기 종료');
outfile.end(function(){
console.log('파일 쓰기 종료');
});
});'nodejs' 카테고리의 다른 글
| [Node.js] 게시판 만들기 (목표설정,사용모듈소개) (0) | 2022.09.22 |
|---|---|
| [node.js] 웹서버 만들기 (0) | 2022.09.22 |
| 로그파일 남기기(winston 모듈 install) (0) | 2022.09.12 |
| nodejs 시작전 자바스크립트 핵심정리! (0) | 2022.09.12 |
| Visual Studio Code에서 Node.js 환경 구축하기 (0) | 2022.09.10 |
댓글