@19.1 ~ /Nodejs
-
프록시 패턴@19.1 ~ /Nodejs 2020. 6. 19. 01:36
프록시는 각 작업을 대상(Subject)으로 전달하여 추가적인 전처리 또는 후처리로 동작을 향상시킵니다. 여러 상황에서 유용하다 데이터 유효성 검사 : 프록시가 입력을 대상(Subject)으로 전달하기 전에 유효성을 검사 보안 : 프록시는 클라이언트가 작업을 수행할 수 있는 권한이 있는지 확인하고 검사 결과가 긍정적인 경우에만 요청을 대상으로 전달 캐싱 : 프록시가 내부 캐시를 유지하여 데이터가 캐시에 아직 존재하지 않는 경우에만 대상에서 작업이 실행되도록 한다 지연 초기화 : 대상의 생성 비용이 비싸다면 프록시는 그것을 필요로 할 떄까지 연기할 수 있다 로깅 : 프록시는 메소드 호출과 상대 매개 변수를 인터셉트하고 이를 기록한다 원격 객체 : 프록시는 원격 위치에 있는 객체를 가져와서 로컬처럼 보이게 ..
-
노드 Promise 패턴@19.1 ~ /Nodejs 2020. 6. 11. 00:04
1 순차패턴, 순차적으로 반복하는 패턴 let tasks = [ ... ] let promise = Promise.resolve(); tasks.forEach(task => { promise = promise.then(()=>{ return task(); }); }); promise.then(()=>{ //모든 작업들이 완료 }); //foreach 대신에 reduce()함수 사용 let tasks = [ ... ] let promise = tasks.reduce((prev, task) => { return prev.then(()=>{ return task(); }); }, Promise.resolve()); promise.then(()=>{ //모든 작업들이 완료 }); 이 패턴을 간단히 적용하면 모든..
-
모듈 정의패턴@19.1 ~ /Nodejs 2020. 6. 3. 00:42
1. exports 지정하기 public API를 공개하는 가장 기본적인 방법은 export로 명기하는 것입니다 이것은 exports에서 참조하는 객체의 속성에 공개할 모든 값을 할당하는 것입니다 이렇게 하면 외부에 공개된 객체가 일련의 관련 기능들에 대한 컨테이너 또는 네임스페이스가 됩니다 //logger.js exports.info = (message)=>{ console.log('info:' + message); }; exports.verbose = (message) =>{ console.log('verbose:' + message); }; //아래처럼 사용이 가능하다 const logger = require('./logger'); logger.info('this is time'); logger.v..
-
콜백 규칙 및 예외처리@19.1 ~ /Nodejs 2020. 5. 31. 23:40
Nodejs에서 연속 전달 스타일(CPS)의 API 및 콜백은 일련의 특정한 규칙을 따릅니다 이 규칙은 Nodejs 코어 API에 적용되지만 대다수의 사용자 영역 모듈과 어플리케이션에도 적용됩니다 1. 콜백은 맨 마지막에 모든 Nodejs 함수에서 표준 규칙은 함수가 입력에서 콜백을 허용한다면 맨 마지막 인자로 전달되어야 한다는것 fs.readFile(filename, [options], callback) 함수 호출의 가독성을 좋게하기 위해서.. 2. 오류는 맨 앞에 CPS에서는 오류가 다른 유형의 결과처럼 전달되므로 콜백 사용이 필요합니다. Nodejs.에서 CPS함수에 의해 생성된 오류는 항상 콜백의 첫번쨰 인수로 전달되며 실제 결과는 두번쨰 인수에서부터 전달됩니다. 동작이 에러없이 성공하면 최초의 ..
-
Map, WeakMap@19.1 ~ /Nodejs 2020. 5. 31. 22:11
ES2015에서는 보다 안전하고 유연하며 ㅈ기관적인 방식으로 해시 맵 컬렉션으 ㄹ활용하도록 Map이라는 새로운 프로토타입을 도입했습니다 const profiles = new Map(); profiles.set('twitter', '@adalovelace'); profiles.set('facebook', 'adalovelace'); profiles.set('googleplus', 'ada'); profiles.size; //3 profiles.has('twitter'); // true profiles.get('twitter'); //"@adalovelace" profiles.has('youtube'); //false profiles.delete('facebook'); profiles.has('faceboo..