⚛️ 리액트

React Router v6.4 이상에서 Router 다루기(RouterProvider, createBrowserRouter, Route)

들어가기 전 21년 말, react-router-dom을 사용할 땐 v6.3이었다. 현재는 메이저 버전은 동일하지만 v6.4를 기점으로 기존에 없던 새로운 기능이 추가되어 이를 소개하고자 한다. 아래의 사진에서 보는 것과 같이 React Router 공식 문서에서도 v6.4에 대해 무엇이 새로운지 소개하고 있다. React Router 공홈 바로가기 현재 react-router-dom의 최신 버전은 v6.11.1이다. 얼마나 자주 업데이트 되는지 궁금해서 Version History를 찾아봤는데, v6.11.1은 현재기준(23년 5월 16일) 12일 전에 공개가 되었다. 그리고 v6.4.0은 8개월 전인 22년 9월에 공개되었다. 꾸준히 기능이 업데이트되고 있다고 생각한다. 더 재밌는 점은 이전의 v5의..

Level1

레벨1 - 인터뷰

🚀 레벨 인터뷰란? 레벨 인터뷰는 해당 레벨의 모든 미션이 끝난 뒤, 6명의 페어끼리 뭉쳐 코치 한 분이랑 함께 해당 레벨에 배운 개념을 인터뷰를 통해 되돌아볼 수 있는 하나의 과제이다. 레벨 인터뷰의 목표는 다음과 같다. 학습한 내용에 대한 자신의 현재 상태를 파악한다. 자신이 알고 있는 지식을 말로 표현한다. 현재 자신의 학습 상태에 대한 메타인지를 기른다. 위와 같은 목표를 도달 하기 위해 크루들은 각자 레벨 로그를 작성하여 이를 같은 조 크루들에게 공유를 해야 한다. 📝 레벨 로그 레벨 로그는 A4용지 한 장 분량으로 작성을 해야 한다. 다음은 내가 구글 Docs를 이용하면 작성한 레벨 로그이다. 레벨 1 레벨 로그 FE 레벨1 레벨로그 자동차 경주 1. 자바스크립트 모듈 시스템 모듈 시스템: 모..

자바스크립트로 달력 만들기

라이브러리 없이 자바스크립트로 달력 만들기 2 - Schedule, Date Picker 만들기

이전 글에서 달력을 만들기 위한 데이터를 만들었습니다. 이번에는 데이터를 활용하여 두 가지 종류의 달력을 만들어 봅니다. 하나는 Schedule입니다. Schedule은 달력에서 특정 데이터를 확인할 수 있습니다. 예를 들면 다음과 같은 달력에 해당합니다. 1. 구글 캘린더(일정을 확인할 수 있다.) 2. 가계부(지출한 금액을 확인할 수 있다.) 위 달력은 모두 특정 데이터를 담은 달력입니다. 또 다른 달력은 Date Picker입니다. 이름 그대로 날짜를 선택할 수 있는 달력입니다. 이는 html의 input 태그를 사용하여 구현할 수도 있는데, 커스튬은 불가능하기 때문에 원하는 UI를 만들기 위해선 처음부터 스스로 만드는 것을 추천합니다. 이번 챕터에는 코드량이 많아 세세한 코드에 대한 설명은 하지 ..

Level4

레벨4 프론트엔드 성능 베이스캠프 1 - 요청 크기 줄이기

프론트엔드 성능 베이스캠프는 우아한테크코스 레벨 4 웹 성능 미션을 바탕으로 마주한 문제를 해결한 과정을 다룬다. 그중 첫 번째는 요청 크기 줄이기이다. 요청 크기라고 하면 다음과 같은 것들을 생각할 수 있다. 소스코드 이미지와 같은 assets 파일 폰트 이 중 소스코드와 이미지와 같은 assets 파일의 크기를 줄여보도록 한다. 성능 테스트에 사용되고 개선되는 코드는 여기에서 확인할 수 있다. 또한 해당 시리즈에서는 특별히 언급을 하지 않는 이상 성능 측정 환경은 dev 환경이다. 1. 소스코드 크기 줄이기 1-1. 기존 소스코드 크기 서비스를 실행하게 되면 bundle.js가 불러와진다. bundle.js 크기를 비교하기 전 package.json의 scripts를 다음과 같이 수정하자. { "sc..

웹팩

웹팩으로 리액트 시작하기 1

리액트를 시작하기 위해 Create-React-App(CRA) 혹은 Vite을 많이 사용한다. 이러한 도구는 webpack설정 없이 편하게 리액트를 시작할 수 있도록 도와준다. 때문에 많은 개발자들이 사용하고 있는 도구이다. 하지만 단점도 분명 존재한다. webpack설정을 추가하거나 수정하는 것이 매우 번거롭다는 것이다. 이러한 단점 때문에 webpack설정을 도와주는 다양한 라이브러리가 등장하였다. craco, react-app-alias, react-app-rewired 등이 그것이다. 충분히 좋은 라이브러리들이지만 처음부터 webpack을 직접 설정을 했다면 번거로운 작업은 하지 않아도 된다. 또한 프론트엔드 개발자로서 webpack은 학습해야 하는 개념이기 때문에 직접 webpack을 설정하여 ..

지원 과정

우테코 최종 합격 후기

1. 12월 28일의 학교 정말 매우 매우 바빴다. 당장 모레가 졸업식이기 때문에 예행연습을 해야 했고 학생부 정리와 짐 정리도 끝내야 했다. 또한 공로상과 장학금 수여도 오후 2시에 있었기 때문에 이것도 신경을 써야 했다. 사실 이날은 2시에 조퇴를 한 후 경건한 마음으로 우테코 메일을 기다리려고 했다. 하지만 바쁜 학교의 업무 덕에 그럴 여유가 없었다. 오히려 다행인 건가? 너무 바쁘다 보니 시간 가는 줄 몰랐다. 공로상과 장학금 수여가 끝나니 2시 반이 되었고 일찍 조퇴하는 것은 힘들다 생각하여 학교에서 남은 업무를 처리하면서 기다리기로 했다. 시간은 어느덧 2시 55분, 곧 우테코에서 최종 합격에 대한 메일이 발송된다. 일부로 신경을 쓰지 않은 채 업무에 집중을 하고 있었다. 하지만 내 눈은 컴퓨..

웹팩

웹팩으로 리액트 시작하기 4 - dev, prod 환경 분리하기

지금까지 하나의 파일(webpack.config.js)에서 환경(dev, prod)에 대한 웹팩을 설정하였다. 환경에 따른 분리가 필요하면 삼항연사자를 사용한다. 아직은 파일이 크지 않아 삼항연산자도 충분하다. 하지만 앞으로 설정이 많아지고 복잡해지면 삼항연산자로 인한 환경 구분은 상당히 피로감을 줄 수 있다. 때문에 환경에 따라 파일을 분리하는 것이 효율적이다. 웹팩으로 리액트 시작하기 네 번째 파트에서는 환경에 분리하여 웹팩을 설정하는 과정을 다룬다. 다음의 글은 웹팩 공식문서를 참고하여 작성했다. Production | 웹팩 Production | 웹팩 웹팩은 모듈 번들러입니다. 주요 목적은 브라우저에서 사용할 수 있도록 JavaScript 파일을 번들로 묶는 것이지만, 리소스나 애셋을 변환하고 번..

⚛️ 리액트

타이머를 구현하면서 마주한 문제와 해결

새로운 버전의 티처캔에서 타이머를 구현하게 되었다. 이전 버전에서도 타이머를 구현했기에 큰 어려움은 없었으나 이전 버전에서 미처 발견하지 못한 문제와 타이머 폰트 크기에 대한 문제가 생겨 이에 대해 기록을 남기고자 한다. 1. 백그라운드에서의 타이머 첫 번재 문제는 '백그라운드에서의 타이머'라고 할 수 있다. 타이머가 실행 중인 탭이 아닌 다른 탭으로 이동되었을 때(탭이 비활성화되었을 때), 타이머를 구현하기 위해 사용한 'setInterval'함수는 백그라운드의 탭의 자원 사용을 최소화하기 위해 'setInterval'의 콜백 함수의 호출 시간이 지정된 시간보다 늦어질 수 있다. 즉 예를 들어, 1000ms 마다 콜백 함수를 호출하는 것을 원했으나 그보다 더 긴 시간인 2000ms마다 호출되는 것이..

웹팩

웹팩으로 리액트 시작하기 2 - 절대 경로 설정하기

웹팩으로 리액트 시작하기의 두 번째 파트에서는 eslint, tsconfig, webpack, 설정을 통해 절대 경로를 적용하는 방법을 다룬다. 1. eslint 설정 eslint 을 아직 설치를 하지 않았으니 이를 먼저 설치한다. 또한 import에 관한 플러그인을 함께 설치한다. yarn add -D eslint eslint-plugin-import 이후 간단한 명령어를 통해 eslint설정 파일을 생성한다. 다음의 명령어를 실행하면 각자가 원하는 eslint을 설정할 수 있다. 해당 과정을 통해 여러 가지의 플러그인이 생성되고 eslint설정 파일이 루트경로에 생성된다. npx eslint --init 이제 생성된 eslint 설정 파일에서 다음과 같은 설정을 추가한다. import 플러그인 추가 ..

모던 리액트 Deep Dive

02장 리액트 핵심 요소 깊게 살펴보기 - JSX

모던 리액트 Deep Dive 02장 리액트 핵심 요소 깊게 살펴보기의 JSX파트를 정리한 글입니다. 1. JSX란? JSX 내부에 트리 구조로 표현하고 싶은 다양한 것들을 작성해 두고, 이 JSX를 트랜스파일이라는 과정을 거쳐 자바스크립트(ECMAScript)가 이해할 수 있는 코드로 변경하는 것이 목표인 문법이다. 2. JSX의 구성요소 JSX는 다음과 같은 4가지의 컴포넌트를 기반으로 구성돼 있다. 1. JSXElement 2. JSXAttributes 3. JSXChildren 4. JSXStrings 2-1. JSXElement JSX를 구성하는 가장 기본 요소로, HTML의 요소(element)와 비슷한 역할을 한다. 이는 다음과 같은 형태 중 하나여야 한다. 1. JSXOpeningEleme..

noah-dev
초부득삼