[현대 소프티어] FE 뉴스스탠드 #5
Table of Contents
FE 뉴스스탠드 3주차 #
Done #
오늘은 3주차 마지막이지만 기획 리뷰와 세미나 시간으로 대부분 보내서 개발을 많이 하지 못했다. 주말동안 힘내서 기능 구현을 많이 해놔야겠다. 그런 의미로 오늘은 세미나와 코드리뷰에서 알게된 것들을 정리하겠다.
세미나 #1 바닐라 JS를 이용한 컴포넌트 방식 개발 #
컴포넌트란 #
재사용이 가능한 각각의 독립된 모듈로, 컴포넌트들을 조합하여 화면을 구성할 수 있다. 현 시점에서의 웹 어플리케이션은 컴포넌트 단위로 설계한다.
컴포넌트 방식 개발 #
- 한번 만들면 필요시 조금씩 바꿔서 재사용이 가능하다.
- 컴포넌트 기준으로 전체적인 구조 파악이 용이하다.
- 코드 중복 및 다른 모듈과의 의존성을 낮춰준다.
- 코드 수정시 해당 컴포넌트만 수정하기 때문에 유지 보수하기에 좋다.
바닐라 js 특징 #
- 컴포넌트별 state
setState
호출 => 현재 state가 업데이트되고 render된다. 단, 렌더링 범위를 지정해야한다는 단점이 있다.- state, props를 통해 객체 이용을 관리한다. => 순서 상관없이 원하는 key에 접근 가능하다.
- 컴포넌트 내부 함수는 화살표 함수로 구현한다.
화살표 함수 vs 일반 함수 #
- 화살표 함수와 일반 함수는 this 바인딩에 차이가 있다.
화살표 함수: 상위 객체 일반 함수: window 객체 (브라우저), global 객체(node.js)
- 최초 렌더링 시에만 실행
세미나 #2 웹페이지 이미지 최적화 #
이미지 최적화 기법 #
웹페이지 로딩 시간에는 js 파일과 이미지가 많은 영향을 끼친다. 따라서 티가 안나는 선에서 최대한 용량을 줄이면 속도 향상에 도움이 된다. 아래는 이미지 최적화 기법들이다.
Image compression #
압축률을 높여 이미지용량 줄이기
Resizing #
사용자화면 사이즈에 맞게 이미지 사이즈 변경
Image format #
용량이 작은 이미지 포맷으로 변경하기 webp 인터넷에서 이미지 로딩 시간 단축을 위해 google이 만든파일 포맷
Responsive image 반응형 이미지 #
pc는 4k를 쓸 일이 있지만 모바일은 없다. 따라서 이런 경우, media-query를 사용하여 반응형 이미지 사용하기!
Lazy Loading #
최대한 이미지 파일 늦게 불러오기 뷰포트 이내에 있거나 가까울때 이미지 불러오기 => 처음에 웹페이지 불러올 때 빠르게 띄울 수 있음
html => img 태그에 loading = "lazy"
js => intersectionObserver
Place holder #
레이아웃 시프트 이미지 로딩에 시간이 걸리면서 레이아웃이 이동되는 현상이다. 레이아웃 시프트는 placeholder 처리를 통해 해결할 수 있다.
Image sprite #
이미지 에셋들을 모아서 한번에 불러오기
해결 방법 #
next.js 사용: next.js는 위의 이미지 최적화 관련된 기능들을 다 제공.
nuxtImage
cloudinary (프론트보다는 백엔드에서 처리하는 기법)
마치며 #
코드 리뷰 회고 #
- 이벤트 핸들러는 무조건 분리하기
- classList.remove, classList.add 안하고 =으로 변경할 수도 있다. 단, 싹 다 바뀌기 때문에 주의.
- await은 blocking 되기 때문에 관련 없는 것들은 동작되게 위로 옮기기
store
상태 정의, 상태를 변경시켜주는 메소드가 있어야 한다.
- subscribe 메소드: store 객체를 구독한다. 메소드가 없으면 상위 객체로 찾는다. => prototype을 가지고 동작하도록…