목록My footPrints 🔥🔥🔥 (311)
Daehyunii's Dev-blog
48.1 모듈의 일반적 의미 모듈이란 애플리케이션을 구성하는 개별적 요소로서 재사용 가능한 코드 조각을 말한다. 일반적으로 모듈은 기능을 기준으로 파일 단위로 분리한다. 이때 모듈이 성립하려면 모듈은 자신만의 파일 스코프(모듈 스코프)를 가질 수 있어야 한다. 자신만의 파일 스코프를 갖는 모듈의 자산은 기본적으로 비공개 상태다. 자신만의 파일 스코프를 갖는 모듈의 모든 자산은 캡슐화되어 다른 모듈에서 접근할 수 없다. 즉, 모듈은 개별적 존재로서 애플리케이션과 분리되어 존재한다. 하지만 애플리케이션과 완전히 분리되어 개별적으로 존재하는 모듈은 재사용이 불가능하므로 존재의 의미가 없다. 따라서 모듈은 공개가 필요한 자산에 한정하여 명시적으로 선택적 공개가 가능하다. 이를 export라 한다. 공개된 모듈의..
오늘은 에러 처리에 대해서 공부했다. 에러 처리에 대해서는 파이썬에서도 try...catch 문을 한 번 공부했었기 때문에 어렵게 다가오지는 않았다. 개념 자체도 쉬운 개념인것 같다. 개발자는 사람이고 코드는 사람이 작성하는 것이니 실수는 언제나 발생할 수 밖에 없다. 그치만 그 실수를 했을때 이를 방어하고 빠르게 바로 잡는것은 굉장히 중요한 일이다. 그런 의미에서 에러 처리는 코드를 작성함에 있어 제일 중요한 부분 중 하나가 아닐까 하고 생각한다. 물론, 코드를 작성하고 테스트없이 바로 서버에 띄우는것은 아니겠지만, 코드를 작성하고 테스트를 하는 과정에서도 인지하지 못한 에러가 발생하면 이를 고치는 일은 생각보다 쉬운일이 아닐 것이다. 또한 에러 처리를 적절하게 잘 활용한다면 이로인해 시간과 비용이 많..
47.1 에러 처리의 필요성 에러가 발생하지 않는 코드를 작성하는 것은 불가능에 가깝다. 따라서 에러는 언제나 발생할 수 있다. 발생한 에러대 대해 대처하지 않고 방치하면 프로그램은 강제 종료된다. console.log('[start]'); // [start] foo(); // ReferenceError -> 프로그램이 강제 종료된다. console.log('[end]'); try...catch 문을 사용해 발생한 에러에 적절하게 대응하면 프로그램이 강제 종료되지 않고 계속해서 코드를 실행시킬 수 있다. console.log('[start]'); // [start] try{ foo(); }catch(error){ console.log('[에러 발생]', error); // [에러 발생] Reference..
46.1 제너레이터란? ES6에서 도입된 제너레이터는 코드 블록의 실행을 일시 중지했다가 필요한 시점에 재개할 수 있는 특수한 함수다. 일반 함수와의 차이점 1. 제너레이터 함수는 함수 호출자에게 함수 실행의 제어권을 양도할 수 있다. 2. 제너레이터 함수는 함수 호출자와 함수의 상태를 주고받을 수 있다. 3. 제너레이터 함수를 호출하면 제너레이터 객체를 반환한다. 46.2 제너레이터 함수의 정의 제너레이터 함수는 function* 키워드로 선언한다. 그리고 하나 이상의 yield 표현식을 포함한다. 이것을 제외하면 일반 함수 정의하는 방법과 동일하다. 에스터리스크(*)의 위치는 function 키워드와 함수 이름 사이라면 어디든지 상관없다. // 제너레이터 함수 선언문 function* genDecFu..
오늘은 제너레이터와 async/await에 대해서 공부했다. 제너레이터 함수에 대해서는 어느 정도 이해할 수 있었으나, async와 await에 대해서는 개념 정도만 이해할 수 있었고, 그 외의 모든 것들은 이해할 수 없었다. 제너레이터, async/await 개념 모두 비동기 처리를 동기 처리처럼 동작하도록 구현할 수 있게 도와주는 기능들인것은 알겠으나, 동기처리와 비동기처리에 대해서도 개념만 알고 있을뿐 정확하게 머리속에 정리가 된 것 같지는 않다. 그래서 이해한 부분까지만 정리를 하고 끝냈다. 생각보다 쉽지 않은 내용에 적지않게 당황했고, 조금은 짜증이 나기도 한 공부였던것 같다. 분명 앞서 배운 내용들을 열심히 공부하고 왔음에도 불구하고 이해하지 못하는 스스로가 조금은 답답하기도 했다. 하지만 반..
오늘은 Promise에 대해서 공부했다. Promise는 비동기 처리를 위한 패턴으로 ES6에서 정의된 표준 빌트인 객체다. 기존의 비동기 처리를 위한 콜백 패턴의 단점인 콜백 헬과 에러 처리의 한계점으로 등장하게 된 기능이다. Promise 생성자 함수는 비동기 처리를 수행할 콜백 함수를 인수로 전달받는다. 오늘 공부한 내용 중에 정확하게 이해한 부분이 있다면 위의 3줄이 전부이다. 비동기 처리가 무엇인지는 사전적인 개념정의는 알겠으나, 비동기 처리를 왜 하는것인지?, 비동기 처리를 함으로서 얻게 되는 이점은 무엇인지? 에 대해서 전혀 인지하지 못하고 있는 상태인것 같다. 그래서 이와 관련 개념들을 배울때마다 기존 콜백 패턴의 단점을 보완하기 위해 한다는것은 알겠으나, 이게 도대체 실제로 어떤 이점이 ..
자바스크립트는 비동기 처리를 위한 하나의 패턴으로 콜백 함수를 사용한다. 하지만 전톡적인 콜백 패턴은 콜백 헬로 인해 가독성이 나쁘고 비동기 처리 중 발생한 에러의 처리가 곤란하며 여러 개의 비동기 처리를 한번에 처리하는 데도 한계가 있다. ES6에서는 비동기 처리를 위한 또 다른 패턴으로 프로미스를 도입했다. 프로미스는 전통적인 콜백 패턴이 가진 단점을 보완하며 비동기 처리 시점을 명확하게 표현할 수 있다는 장점이 있다. 45.2 프로미스의 생성 Promise 생성자 함수를 new 연사자와 함께 호출하면 프로미스 객체를 생성한다. ES6에서 도입된 Promise는 호스트 객체가 아닌 ECMAscript 사양에 정의된 표준 빌트인 객체다. Promise 생성자 함수는 비동기 처리를 수행할 콜백 함수를 인..
REST는 HTTP/1.0과 1.1의 스펙 작성에 참여했고 아파치 HTTP 서버 프로젝트의 공동 설집자인 로이 필딩의 2000년 논문에서 처음 소개되었다. 발표 당시의 웹이 HTTP를 제대로 사용하지 못하고 있는 상황을 보고 HTTP의 장점을 최대한 활용할 수 있는 아키텍처로서 REST를 소개했고 이는 HTTP 프로토콜을 의도에 맞게 디자인하도록 유도하고 있다. REST의 기본 원칙을 성실히 지킨 서비스 디자인을 "RESTful"이라고 표현한다. 즉, REST는 HTTP를 기반으로 클라이언트가 서버의 리소스에 접근하는 방식을 규정한 아키텍처고, REST API는 REST를 기반으로 서비스 API를 구현한 것을 의미한다. 44.1 REST API 구성 REST API는 자원, 행위, 표현의 3가지 요소로 ..