#220816
지난번 이미지 업로드 방식
대표적인 문제점
2번까지만 하고 미리보기가 가능하게 개선
FileReader를 사용해서 업로드 이전에 미리보기 보여주기
5번 업로드하면 for문으로 5번 요청(async, await) 해야 하는 비효율적인 방식
→ Promise.all을 통해 1번을 효율적으로 만들기 (동시 실행, 1번 await)
엄청 긴 이미지 주소
2번 날라감
Promise All
확장자 webp
파일 드래그 앤 드롭 라이브러리
LazyLoad
필요한 사진을 그때그때 다운로드
PreLoad
미리 다운로드
이거 설정하고 보면 일반 다운로드는 엄청 느림
memo
자식이 리렌더링 되는걸 방지 (부모만 highlight)
useMemo로 나만의 useCallback 만들기
const onClickCountState = useMemo(
() => () => {
setCountState((prev) => prev + 1); // countState + 1 (x)
},
[]
);
memo를 쓰지 않을 때 안좋은 예시
React: render optimization for Material UI collapsible list using Hooks and Memo.
Wappalyzer
노션 스택
PWA : 다운로드 할 수 있게
적응형
width: 1024-1280 사이(작은 노트북에서도 보기 위함)
반응형
모바일 / 태블릿 / PC → css 3개 만들기
bootstrap 의 규격을 따라 작성
1. css를 3단계로 구분 → css 작업 3배
2. 기준이 바뀌었을 때 바꾸기 어려우니까 따로 변수를 만들고 breakPoints 만들어서 import 하기
모바일 : 가장 많이 사용되는 기종의 사이즈로 개발
늘리는건 문제가 없는데 줄이는건 문제가 있을 수 있으므로
💡
rem ⇒ body사이즈의 영향을 받음 (body가 작아지면 폰트가 모두 일괄적으로 작아짐)
em ⇒부모사이즈의 영향을 받음(부모가 작아지면 폰가가 일괄적으로 작아짐)
https://nekocalc.com/px-to-rem-converter
CSS가 성능에 미치는 영향(Critical Rendering Path)
브라우저에 그림이 그려지는 순서
결론
메모이제이션 : 성능최적화 (큰 프로젝트에 체감)
반응형 디자인: 하나의 서비스로 모바일/태블릿 시각화, 무조건 정답은 아님
반응형 모바일 : PWA
: 모바일에 기능을 주는것. 이게 없으면 따로 app을 만들어야 함
요청이 서버에 도달하기도 전에 화면의 값을 바꿔버리는 것
성공확률이 99% 인 요청에 적용
실패하더라도, 큰영향이 없는 요청에 적용 ( 결제 같은 곳에는 적용 x)
Scraping / Crawling
1번가지고오면 Scraping (라이브러리 : cheerio)
정기적으로가지고오면 Crawling (라이브러리 : puppeteer)
해당 API endpoint에 GET요청
💡 Q : 안되는 사이트들은 먼가요?
A : CORS 때문에 브라우저인 네이버에 접근 못함
→ 모바일이나 백엔드(proxy)에서 요청 시 가능 (openapi할 때 했음)
백엔드 과정 이해 ⇒ 서버 사이트 렌더링까지 연결