<h1>서울숲_M_Day05 리뷰 레포트</h1> <h3>참석자</h3> - 정예원, 이창권, 서준배, 정태용 <h2>1. 코드 동작 이해</h2> - 제네레이터함수 - 함수내에서 정지 시점을 정해서 조절이 가능한 함수. - yield를 통해 정지가 가능 - 이후 next()를 통해 정지를 한 yield로부터 시작. - 메모리 효율에 기여 가능. - 참고 블로그 URL: https://velog.io/@rohkorea86/Generator-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%9D%B4%ED%95%B4%ED%95%B4%EB%B3%B4%EC%9E%90-%EC%9D%B4%EB%A1%A0%ED%8E%B8-%EC%99%9C-%EC%A0%9C%EB%84%A4%EB%A0%88%EC%9D%B4%ED%84%B0-%ED%95%A8%EC%88%98%EB%A5%BC-%EC%8D%A8%EC%95%BC-%ED%95%98%EB%8A%94%EA%B0%80 - promise - 자바스크립트의 특성인 비동기를 해결하기위해 콜백함수를 사용하는데 가독성이 떨어지는것을 해결하기위해 사용 - 에러처리가 편함 - 프로미스의 상태 3가지 - pending대기 - 비동기 처리 로직이 아직 완료 안됨 - fulfilled이행 - 비동기 처리 로직이 완료 , 결과값 반환 상태 - rejected실패 - 비동기 처리가 실패, 오류가 발생 - 참고 : https://joshua1988.github.io/web-development/javascript/promise-for-beginners/> ```js function getData(callbackFunc) { $.get('url 주소/products/1', function (response) { callbackFunc(response); // 서버에서 받은 데이터 response를 callbackFunc() 함수에 넘겨줌 }); } getData(function (tableData) { console.log(tableData); // $.get()의 response 값이 tableData에 전달됨 }); --> function getData(callback) { // new Promise() 추가 return new Promise(function (resolve, reject) { $.get('url 주소/products/1', function (response) { // 데이터를 받으면 resolve() 호출 resolve(response); }); }); } // getData()의 실행이 끝나면 호출되는 then() getData().then(function (tableData) { // resolve()의 결과 값이 여기로 전달됨 console.log(tableData); // $.get()의 reponse 값이 tableData에 전달됨 }); ``` - this의 scope 해결 - bind를 통해 연결 - this를 저장하여 사용 - this가 필요없도록 class외부로 꺼내서 사용 - arrow function을 사용 <h2>2. 코드 동작 개선</h2> - git의 branch에 대해서 이해를 하고 있는가? - 다양한 git workflow에 따라 branch전략이 달라진다. - 각 용도에 맞는 branch에서 개발자가 따로 작업 - pull request를 통해서 merge를 하여 branch를 합친다. - 기본적인 git work flow : 항상 유지되는 메인 브랜치들(master, develop)과 일정 기간 동안만 유지되는 보조 브랜치들(feature, release, hotfix)을 포함하여 총 5가지의 브랜치를 사용한다. - 디버깅단계에서 breakpoint를 사용하면서 문제를 해결하려고 했는가? - 실행 중간에 변수를 확인하거나, 실행 순서를 확인하기 위해 사용함. <h2>3. Consideration</h2> - 각자 어떤 디버깅 방법을 사용해보았는가? 이 부분을 모두 이야기하고 적어보자. - breakpoint를 통해 특정 지점이나 오류난 부분을 정지하여, 변수값을 확인하며 진행. - 프로젝트에서 npm 명령어를 활용해 추가로 외부 모듈을 설치했을때 package.json에 어떤 변화가 생기는지 설명하자. - dependency에 설치한 외부 모듈명과 모듈 버전이 추가된다. - 이로 인해 require("underscore")로 호출이 가능해졌다. ```json "dependencies": { "underscore": "^1.9.1" } ``` - node_modules 디렉토리는 어떤 역할을 하는 디렉토리 인가 설명해보자. - npm으로 다운받은 외부 모듈이 저장되는 장소 - export, require 동작방식에 대해서 설명해보자. - commonJs에서 사용하는 모듈 사용 방식(vs ES6의 import,export) - 모듈을 require할 때마다 새로운 인스턴스가 생성되는 것이 아니라 캐싱된 객체 인스턴스를 재사용함 - key값으로 해당 모듈 파일의 경로를 갖게 되는데 key값이 삭제된다면 다음 require 요청시 다시 재로딩하게 됨 - 추가 - module.exports 와 exports는 같다.