본문 바로가기
반응형
[JavaScript] 디바운싱과 쓰로틀링 디바운싱(debouncing)과 쓰로틀링(throttling). 언뜻 들어는 봤지만 유야무야 시간을 보내다가, 기술 과제 탈락 후 디바운싱과 같은 최적화 작업을 했으면 좋겠다는 피드백을 받았다. 그렇다면 어떨 때는 디바운싱을 사용해야하고, 쓰로틀링을 사용해야할까? 이번 기회에 제대로 개념을 잡고 가야겠다고 생각했다. 들어가기 전 setTimeout() - 함수의 실행을 예약하는 타이머 기능 clearTimeout() - 타이머의 실행을 취소하는 기능 디바운싱 - 빈번하게 발생하는 이벤트를 '특정 시간 이후에 한번만' 실행 시키는 최적화 기법 쓰로틀링 - 빈번하게 발생하는 이벤트를 '일정한 간격으로 한번만' 실행 시키는 최적화 기법 setTimeout() - 함수의 실행을 예약하는 타이머 기능 setTim.. 2022. 6. 10.
[JS] switch 사용법(feat.타입스크립트) switch는 하나의 표현식에 대해 여러 조건들이 존재할 때 유용하게 쓸 수 있다. 즉, 어떤 상황에 대해 여러 경우(분기)로 나누어질 때 사용하면 좋다. (과일 가격 알려주기, 테마 고르기, 방향에 따른 캐릭터의 움직임, 평가된 값에 따라 변환을 해주어야 할 때 등) 구문(syntax)과 예시를 통해 살펴보자. 구문(Syntax) switch (expression) { case value1: // 표현식(expression)의 결과가 value1과 일치할 때 실행 됨 break; case value2: // 표현식(expression)의 결과가 value2과 일치할 때 실행 됨 break; // ... case valueN: // 표현식(expression)의 결과가 valueN과 일치할 때 실행 됨 .. 2022. 3. 27.
Prettier, ESLint 자동화하기 Prettier, ESLint로 협업 강화하기 글에 이어서 자동화를 시켜보자. 저번 글에서 설명한 것처럼 사용하지 않는 변수와 같은 '코드 품질' 검사는 ESLint에게 맡기고 '일관된 코드 스타일', '가독성'은 Prettier가 담당을 했다. 둘의 장점을 합쳐 통합까지 완료를 하고보니 매번 개발자가 명령어를 실행하기엔 비효율적이다. 이 효과를 제대로 보려면 자동화가 필요하다. 자동화를 하는 방법은 두 가지로 나뉜다. 깃 훅(Git Hooks)을 사용하는 방법 VS Code extension을 사용하는 방법 Git Hooks 깃(git)은 어떤 이벤트가 생겼을 때 자동으로 특정 스크립트를 실행하도록 할 수 있다. 다시 말해 깃 훅은 명령어 실행 전후에 특정 스크립트를 실행하게 만들 수가 있다. 이걸 좀.. 2021. 12. 27.
Prettier, ESLint로 협업 강화하기 협업을 위한 도구 협업에 있어 개발 외적으로는 적극적인 소통과 정보 공유, 사내 지식 문서화 등의 문화가 있다. 그렇다면 개발 내적으로는 어떤 것들이 있을까? 개발자마다 프로젝트 폴더의 구조, 코딩 스타일이 조금씩 다를 것이다. 이것은 협업 시 한 프로젝트에서 각기 다른 스타일의 코딩을 한다는 것을 의미한다. 이렇게 할 경우 추후 유지보수를 하기에 까다롭고 다른 팀원이 투입되거나 인수인계 시 서로 다른 코드 스타일에 당황하거나 어려움을 겪을 수 있다. 따라서 코드의 문법, 안티 패턴 검사와 함께 일관된 코드 스타일을 제공(formatting)하고 규칙을 정해주는 도구를 사용하는게 좋다. Prettier와 ESLint가 이에 해당한다. Prettier 프리티어(prettier)는 코드 포매터이다. pret.. 2021. 12. 24.
웹팩(Webpack) 이해하기 - 개발 서버 저번 글에 이어서 웹팩 개발 서버에 대해 알아보자. 웹팩 개발 서버 외에도 VS code의 Extension인 Live Server나 Node.js로도 로컬 서버를 구현할 수 있다. 이런 여러 선택지 중에서 웹팩 개발 서버를 통해 얻을 수 있는 이점은 무엇일까 생각을 해봤다. 운영 환경과 비슷하게 만들기 개발 환경에서도 운영 환경과 비슷한 환경을 만들어 주는 것이 좋다. 운영 환경과 맞춤으로써 배포 시에 잠재적 문제를 미리 확인하고, 예방할 수있다. 이런 노력은 타입스크립트를 사용하는 것과 비슷한 맥락이다. 협업에서의 이점도 있지만 타입을 지정하여 운영 환경의 문제들을 예방할 수 있다. 학습 비용 감소 처음엔 Node.js를 통해 서버를 구현하고 목업 API 작업을 했었다. Node.js를 공부하니 Ex.. 2021. 11. 22.
웹팩(Webpack) 이해하기 처음 리액트를 배울 때 이런 생각이 들었다. "이렇게까지 어려운 문법을 배우면서 굳이 써야하나? 내 개인 프로젝트에 쓰일 정도로 편하긴 한가?" 반은 억지로 하다보니 따라치기 수준의 학습밖에 하지 못했다. 그러다 Vanilla JS로 SPA 만들기같은 과제를 두 번이나 하게 되면서 리액트를 쓰는 이유를 알게 되었다. 아니, 좋아하게 되었다. 리액트에선 많은 것들이 추상화 되어 있었고 굉장히 편리한 도구였다. 이제는 "고작 이 문법으로 이렇게나 많은 것들을 할 수 있다니"로 생각이 바뀌게 되었다. 그렇다면 CRA에서 기본으로 깔려있는 이 웹팩도 알아볼 필요가 있다. 분명 이유가 있을 것이다. 내 평일은 물론이고 주말까지 시간을 순삭하게 만든 웹팩을 한번 살펴보자. ✏️ 웹팩을 배우면서 제가 개인적으로 느꼈.. 2021. 11. 16.
new 연산자로 재사용성 높이기 new 연산자와 생성자 함수 new 연산자는 사용자 정의 객체 타입 또는 내장 객체 타입의 인스턴스를 생성한다. - MDN MDN에서 설명하는 new 연산자다. 여기서 설명하는 '사용자 정의 객체'와 '객체 타입의 인스턴스 생성'에 대해 알아보자. 객체 리터럴 {...}을 사용하면 객체를 쉽게 만들 수 있다. 하지만 유사한 객체를 여러 개 만들 경우엔 new 연산자와 생성자 함수를 사용하면 유사한 객체 여러 개를 쉽게 만들 수 있다. 예를 들어 복수의 사용자, 메뉴 내 다양한 아이템을 객체로 표현할 경우에 유용하다. 생성자 함수 생성자 함수는 다음과 같은 관계를 따른다. 함수 이름의 첫 글자는 대문자로 시작한다 반드시 new 연산자를 붙여 실행한다. 예시 function User(name) { // th.. 2021. 11. 1.
반응형