으엉으엉어어엉 힘들어
기존은 파일을 올리면 백엔드에서 스토리지로 보내 url을 받아서
url을 이용하여 미리보기하는 방법을 사용하였다.
이젠 바로 파일을 스토리지에 저장하고
이미지 주소를 서버에서 가져오는 것이 아니라, 미리보기 용으로 만든 임시 주소를 만드는 방법을 써서 데이터를 절약할수 있다!
등록 버튼을 누르면 이미지 저장과 게시물 등록이 동시에 이뤄지게 된다
파일 객체를 이용해 내용을 읽고 사용자 컴퓨터에 저장하는 것을 가능하게 해줌
이제 미리보기를 최적화하고 얻은 데이터값이다.
이 데이터를 그대로 백으로 보낸다면
파일 자체보다 커지기 때문에 미리 보기 용도로만 사
용해야한다.
이렇게 2개의 주소가 발생되고 따로 사용해야한는 점은 기억해야한다
+) createObjectURL과 fileReader 둘 다 이미지 업로드 시 이미지를 불러와 미리보기가 가능함
createObjectURL을 사용하게 되면 소스코드가 짧아져 작성하기 쉽고 좋겠지만, fileReader와는 다르게 createObjectURL은 blob 객체로 이미지를 생성하기 때문에 해당 데이터를 서버와 통신할 때 사용 불가. createObjectURL보다는 fileReader가 브라우저 호환성이 좋기 때문에 사용자 편의를 생각한다면 fileReader를 사용하는 것이 좋음
진짜 주소라도 파일이 너무 크기에 전송을 금지하며
가짜주소는 보이지 않기에 전송이 금지된다.
const onClickPromiseAll = async () => {
const result = await Promise.all(["http://storage.url1.jpg",
"http://storage.url1.jpg", "http://storage.url1.jpg"].map((el)
=> new Promise((resolve, reject) => {
setTimeout(() => {
resolve(el)
}, 3000)
})
))
};
페이지에 모든 것을 미리 데이터를 받아오는 것이 아니라
화면에 보일때 데이터를 받아오는 것
즉 페이지를 읽어들이는 시점에 중요하지 않은 리소스 로딩을 추 후에 하는 기술
스크롤이 내려가면서 필요한 때가 되면 로드가 되어야함.
이미지가 많은 페이지의 경우 전체를 받아온 뒤 실행하면 속도가 느림
반대로 전체를 받아왔으나 보지않고 다른 페이지로 갈경우 데이터 낭비
이미지 라이브러리 (React-lazy-load, React-dropzone, react-avator-editor, ant-design)
https://www.npmjs.com/package/react-lazy-load
https://www.npmjs.com/package/react-dropzone
React-dropzone은 react에서 제공하는 대표적인 이미지 라이브러리
https://www.npmjs.com/package/react-avatar-editor
-React-avator-editor
React-dropzone에 비하면 다운로드 수가 많이 적지만, 좋은 기능들을 담고 있는 라이브러리
이미지 사이즈 동그라미 형태등으로 변경시키고 싶을 떄 사용
https://ant.design/components/image/
ant-design
antd에서도 라이브러리가 있음
https://www.npmjs.com/package/react-beautiful-dnd
드래그와 드롭을 할수 있는 라이브러리
사용도가 높음
https://pagespeed.web.dev/
사이트 내의 다운로드 속도 확인 가능함
어떤것을 하면 좀더 빨라질지 알려줌