일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- 안드로이드 바로가기
- FlutterView MethodChannel
- 스위프트
- 스위프트 UserDefaults
- 안드로이드 에러
- 앱 꺼졌을 때 푸시 데이터 저장
- 안드로이드 숏컷
- 노티피케이션 익스텐션
- flutter rotate
- 스위프트 카메라
- 플러터 뷰 컨트롤러
- 스위프트 테이블 뷰 셀
- Flutter UIKitView MethodChannel
- Flutter NativeView
- 푸시 데이터 저장
- swift sms
- 스위프트 푸시
- native flutter view
- 스위프트 앨범
- 앱 백그라운드 푸시 데이터 저장
- flutter 회전
- swift autolayout
- NotificationService Extension
- 안드로이드 FCM
- Swift flutterview
- 스위프트 웹뷰
- Swift flutterviewcontroller
- swift 문자
- silent push
- 안드로이드 앨범
- Today
- Total
Things take time
[NodeJS] 3일차 - 프로토타입 본문
[프로토타입]
- 자바스크립트의 클래스, new연산자를 통해 새로운 객체를 만들어 냄
- 함수 형태로 만들게 되면 자동 생성자가 부여됨 => 클래스 처럼 사용이 가능함
// this 명령어를 통해 name, age라는 속성을 바로 생성(선언)및 대입할 수 있음 function Person(name, age){ this.name = name; this.age = age; } // 프로토타입 => 이미 생성된 함수 객체에 외부에서 선언할 수 있으며 함수의 형태로 만듬 Person.prototype.walk = function(speed){ return speed + "km로 이동"; } var person01 = new Person("Nodejs", "100"); console.log(person01.age + " / " + person01.name + " : " + person01.walk(100));
calc3.js
- inherits를 통해 Calc라는 프로토타입은 EventEmitter를 상속받아 on을 사용할 수 있음
var util = require('util'); // events모듈내에 EventEmitter 객체를 가져옴 var EventEmitter = require('events').EventEmitter; var Calc = function(){ // this = 이 Calc 함수를 호출한 객체 var self = this; this.on('stop', function(){ console.log('cacl에 stop이벤트 발생'); }); }; util.inherits(Calc, EventEmitter); Calc.prototype.add = function(a,b){ return a+b; } module.exports = Calc; module.exports.title = 'calculator';
ch04_02.js
var Calc = require('./calc3.js'); // Calc는 프로토타입이므로 new를 통해 생성 var calc = new Calc(); calc.emit('stop'); console.log(Calc.title + '에 STOP이벤트 전달'); console.log(calc.add(1,2));
[파일 읽기]
- fs 모듈을 받아와 동기, 비동기 식으로 선택 사용 가능
var fs = require('fs'); // 동기식 -> data가 읽어진 다음 다음 줄 호출 var data = fs.readFileSync('./package.json', 'utf8'); console.log("readFileSync 동기식 : " + data); // 비동기식 fs.readFile('./package.json', 'utf8', function(err, data){ console.log(data); }); console.log('readFile 비동기 함수 실행');
[파일쓰기]
- writeFileSync도 있음
var fs = require('fs'); // 파일이 없으면 생성하게 됨, 그러나 이어 쓰는 것은 아님 fs.writeFile('./output.txt', 'Hello World', function(err){ if(err){ console.log('에러 발생 : ' + err); } else{ console.log('파일 생성 혹은 기존 쓰기 완료'); } });
[파일 이어 쓰기]
// fd : file descriptor, 파일에 접근할 수 있게하는 핸들러 var fs = require('fs'); fs.open('./output.txt', 'a+', function(err, fd){ if(err){ throw err; } var buf = new Buffer("안녕!\n"); fs.write(fd, buf, 0, buf.length, null, function(err, written, buffer){ if(err){ throw err; } console.log (err, written, buffer); fs.close(fd, function(){ console.log('파일 열고 기존 데이터에 이어 붙이기 완료'); }); }); });
[파일 읽고 쓰는 방법 1 - 버퍼]
var output = '안녕 1!'; var buffer1 = new Buffer(10); // buffer1에 output만큼을 쓰고 그 길이를 return var len = buffer1.write(output, 'utf8'); console.log('첫 번째 버퍼의 문자열 : %s', buffer1.toString()); console.log('첫 번재 버퍼의 문자열 길이 : %d', buffer1.length); console.log(len); var buffer2 = new Buffer('안녕 2!', 'utf8'); console.log('두 번재 버퍼의 문자열 : %s', buffer2.toString()); console.log('두 번재 버퍼의 문자열 길이 : %d', buffer2.length); // 버퍼타입 확인 방법 console.log('버퍼1 타입 : %s', Buffer.isBuffer(buffer1)); // 버퍼에 있는 문자열 데이터의 길이 구하기 console.log('버퍼1의 데이터 길이 : ' + Buffer.byteLength(output)); console.log(buffer1.toString('utf8', 0, Buffer.byteLength(output))); console.log(buffer2.toString('utf8')); // 버퍼에 있는 문자열 복사(전체 복사 및 대체) buffer1.copy(buffer2, 0, 0, len); console.log('복사 결과 : %s', buffer2.toString('utf8')); // 두개의 버퍼 붙이기 var buffer3 = Buffer.concat([buffer1, buffer2]); console.log('붙인 결과 : %s', buffer3.toString('utf8'));
[파일 읽고 쓰는 방법 2 - 스트림]
- 스트림은 버퍼보다 작은 단위, 네트워크나 타 기종간의 통신 방법으로 사용
- 스트림, 버퍼는 사용자가 익숙한 방법으로 사용
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); // 데이터 console.log('읽은 데이터' + data); // 문자열 outfile.write(data); }); infile.on('end', function(){ console.log('파일 읽기 종료'); outfile.end(function(){ console.log('파일 쓰기 종료'); }); });
[http 서버 오픈]
var fs = require('fs'); var http = require('http'); var server = http.createServer(function(req, res){ var instream = fs.createReadStream('./output.txt'); instream.pipe(res); }); server.listen(7001, '127.0.0.1');
위는 서버가 켜진 상태, ctrl + c는 끄는 것
127.0.0.1은 로컬호스트를 의미하고, 7001은 포트번호이므로