이번 주 멘토링 시간에는 모듈화와 추상화에 대한 내용을 다뤘다.모듈화와 추상화는 정보처리기사 시험을 준비하면서 들었던 개념이었지만, 활용보단 이론에 더 가까운 단어였다. 하지만 멘토님께서 사례를 통해서 설명을 해주신 덕에 이제는 이 개념을 코드에 녹여내기 위해 어떤 과정을 거쳐야하는지 이해하게 되었다.그렇다면 모듈화와 추상화가 무엇인지부터 알아보자 모듈화와 추상화모듈화의 개념적 정의는 아래와 같다.소프트웨어 설계에서 기능 단위로 분해하고 추상화 되어 재사용 및 공유 가능한 수준으로 만들어진 단위공부하면서 가장 만나고 싶지 않은, 선행적 지식이 필요한 순간이다. 정의를 알아보는데, 또 다른 단어에 대한 정의를 알아야 이해할 수 있다니..! 추상화는 또 뭔데?! 추상화의 개념적 정의공통적인 부분을 취하고 차..
전체 글
코린이의 성장일기이자, 개념 복기를 위한 기록처프론트엔드 공부를 하면서 CSS 실력도 너무 중요하다는 생각을 늘 하고 있었다.지금은 프론트엔드 멘토를 통해서 많이 만들어보고, 다양한 속성들에 대해 이해 해보려고 노력하고 있다. 그리고 기다리던, 빔캠프 6월 과정이 오픈해서 이번에 신청했다!CSS를 잘하는 지인이 정말 좋은 강의라고 강력 추천해서 신청했는데, 아직 한 달 정도 남았지만 너무 기대가 된다. ** 빔캠프에 대한 자세한 내용은 사이트를 참조하시길 **https://veamcamp.com/ 빔캠프가 본격적으로 시작되기 전, CSS에 대한 기본 개념에 대해 공부를 한 후 가려고 한다.(강사님께서 메일로 예습해오면 좋을 개념들을 리스트업 해주셨음)더보기Cascade의 의미 & Selector SpecificityPositionCSS Box-..
캘린더와 함께 간단한 할 일을 메모할 수 있는 사이트를 만들어보자 생각한 지 언....(기억 안남)그래서 이번에 프로젝트도 끝났겠다, 프론트엔드 멘토에서 얻은 의욕을 여기에 써보자는 생각이 들었다. 리액트로 구현을 할까, 바닐라JS로 구현을 할까 고민을 했지만기본적인 자바스크립트에 익숙치 않은 상태에서 리액트로 들어갔던 것이 내심 불안했던 지라 이번에는 바닐라 JS로 구현해보기로 마음 먹었다! 우선 디자인부터 만들어보자! 원래는 프론트엔드 멘토에 있던 시안을 기반으로 만들어보려고 했는데, 조금 더 단순하고 깔끔한 디자인으로 만들고 싶어서 내가 처음부터 새로 만들어봤다!!구성은 아주 간단하다.이번 달을 확인할 수 있는 캘린더 부분 선택한 날짜의 일정을 확인하고 등록할 수 있는 사이드 바기본적인 HTML과..
프로젝트를 진행하고 코드를 작성하다보면, 상태 관리 라이브러리의 필요성을 느낄 때가 있다.현재 로그인한 유저의 정보, 다크 모드 라이트 모드 설정 등 생각보다 많은 부분에서 상태 관리 라이브러리의 필요성을 느꼈다. 주된 이유는, 너무 깊이 이어지는 Prop drilling이 이유였지만, 현재 상태값에 대한 인과 관계를 보다 쉽게 찾기 위해 라이브러리를 쓰고자 할 때도 있었다.(여러 컴포넌트에서 하나의 state를 핸들링하면, 현재의 state가 왜 그 값을 갖게 되었는지 찾기 어렵기 때문) 유명한 상태 관리 라이브러리들은 많았지만, 나는 라이브러리들 간의 차이를 알고 필요에 따라 적절한 것을 선택해서 사용하는 개발자가 되고 싶었다.그래서 상태 관리 라이브러리들의 공식문서를 읽고 사용해보면서, 그 구조들을..
이번에 프로젝트에서 페이지네이션을 버튼을 구현해봤다.다 구현해보고 나니 나름..? UI와 로직을 잘 분리한 것 같다는 생각이 들어서, 코드를 한 번 가지고 와봤다. 더보기- Next JS app router- tailwind- typescript [ 버튼 UI ] PagiNationButtonexport default const PagiNationButton = ({ currentPage, totalPage, handleCurrentPage, hiddenCount = false, // 두 번째 유형처럼 사용하기 위한 prop}: PagiNationButtonProps) => { return ( {!hiddenCount && ( {totalPage} ..
프로젝트 환경- Next JS _app router- TypeScript- Style : TailWind 중급 프로젝트에서 모달 UI를 맡아서 작업을 하고 있다.다른 모달들은 단순한 UI이기도 하고, 크게 고민할 요소조차 없었다. 그냥 하면 되는 것들. 그런데도, 생각보다 시간이 꽤나 걸렸다.이유가 뭘까, 왜이렇게 속도가 안날까 곰곰히 생각을 해봤다.그 이유는 절대적인 경험 부족이다. 다양한 input type을 구현 해본적이 없었고, 막연하게 쉽게 할 수 있을 것이라고 자만하고 있었다.재사용을 고민하다보니, 공통 input으로 빼기도 애매했고 생각보다 고민에 오랜 시간이 걸렸다.그 중에서도 내가 턱! 하고 막히게 된 input은 바로 file 타입을 가진 input이다. 내가 원하는 대로 input을 ..
위클리 미션에서 리팩토링을 하고 싶은 부분이 아주 많다.그 중에서 한 두가지 정도를 뽑아서 매주 리팩토링을 해보자는 다짐을 했었는데, 이번주에는 모달을 리팩토링 해보기로 했다. 그래서, 멘토링 시간 때 모달 리팩토링에 대해서 이야기를 해봤고 context API만으로도 구현이 가능해보인다는 결론이 나서 이번 주차에 해보기로 마음을 먹었다..! 이전부터 상태관리를 위한 다양한 방법들을 공부하고 싶었기 때문에 바로 리팩토링에 들어갔다.그럼 바로, ContextAPI를 이용해서 어떻게 모달 리팩토링을 진행했는지 확인해보자~ ! 😊 Modal 컴포넌트 리팩토링이 필요하다고 생각한 이유우선, 왜 모달 컴포넌트를 리팩토링 하고 싶었는지에 대해 짚고 넘어가야할 것 같다.현재 모달 컴포넌트 구현을 위한 로직은 아래..
이번 주차의 요구사항은,저번 주차에 만들었던 Input Component를 이용해서 로그인 및 회원가입 기능을 완성하는 것이다.하지만, react-hook-form을 적용하는 것이 심화 요구사항이기 때문에 이를 적용해서 구현해보았다. 요구사항의 세부사항이 많은 관계로 간략하게 정리했다!- input에서 focus out될 때 빈 값이거나 유효한 값이 아니면 에러메시지를 출력한다.- 모두 유효한 값이 입력되었을 때 로그인 및 회원가입 시도가 가능하고, api에 POST 요청을 보내 로그인 및 회워가입이 가능하면 folder 페이지로 이동한다.react-hook-form는 처음 써보는 라이브러리였기 때문에 적용하는 과정과 함께 공식 문서의 내용을 정리해보려고 한다 아직 난 아무것도 모르는 응애입니다😊..
WHAT Frontenc Mentor? https://www.frontendmentor.io/challenges?sort=difficulty%7Casc CHALLENGE TITLE : Suite Landing Page FOCUS ON This small-ish HTML and CSS only landing page includes some interesting layout decisions. Perfect if you want to put your layout and responsive skills to the test! 반응형과 시안 안의 몇 가지 요소를 CSS로 구현하는게 재미있을 거라고 하네요! WHAT TO DO? - 두 번째 섹션과 footer 부분을 완성했다. - z-index에 대해서 생각한..
week13의 심화 요구사항을 이번 주차에 구현하기로 마음먹고, next.js로의 마이그레이션과 심화 요구사항을 구현했다. 심화 요구사항- 상단에 있던 링크 추가하기 영역이 가려져 보이지 않을 때 최하단에 링크 추가하기 영역을 고정하도록 만들었나요? - 푸터가 시작되는 지점에서는 최하단에 고정된 링크 추가하기 영역이 보이지 않도록 했나요? 이 요구사항과 함께, Intersection Observer를 이용해 구현해보라는 코멘트도 함께 달려있어서 사용해보았다 Intersection Observer 사용법위 요구사항에서 나는 folder 페이지 컴포넌트의 header와 footer을 주시 대상으로 지정해야 했다.// folder 페이지 구성 기본 HTML 태그를 사용했을 땐 바로 useRef()를..