티스토리 뷰
Dev/Racstagram_V2
20210728 리팩토링 Instagram 클론 프로젝트 by Redux-toolkit16 : Container 구조 리팩토링, 이미지 리사이징
라쿤 2021. 7. 28. 19:26리팩토링 Instagram 클론 프로젝트 by Redux-toolkit16

📄 프로젝트 설명
이 프로젝트는 기존에 React & firebase를 통해서 만든 인스타그램 클론 프로젝트 리팩토링 프로젝트 입니다. (해당 프로젝트는 프로젝트 카테고리에서 확인 가능합니다.)
해당 프로젝트에서는 redux-toolkit(Slice 모델)을 사용하여 상태관리를 구현하고 있습니다.
더불어 나중에, styled component나 sass 중에 채택하여 css 작업을 할 예정 입니다.
💻 화면 개요
체크는 현재 기능적으로 구현된 상황을 의미합니다.
-
로딩 화면 또는 Component: 앱 실행 초기화 작업시 로딩 또는 다른 작업시 사용할 로딩 화면 및 Component
-
로그인 화면: 기본 Email 로그인, Social 로그인, 로그인 에러-
Email 로그인: Email, Password input, 로그인 버튼 -
Social 로그인: google로그인 버튼, github로그인 버튼 -
로그인 에러: Email로그인, google로그인, github 로그인 에러 발생시 사용자에게 출력
-
-
회원가입 화면: Email 로그인을 위한 계정을 만드는 화면, 회원가입 에러-
Email 형식 가입: Email, Password input, 회원가입 버튼- 가입시 사용자 Nickname 지정 input (추가 사항)
-
-
피드 화면: 사용 유저의 모든 게시글을 표시하는 화면-
게시글 박스:-
타이틀 영역: 최상단의 작성자 사진 + 이름, 게시글 수정 탭-
편집버튼: 글 수정하기, 삭제하기 모달 -> 해당 버튼 누르면 삭제 또는 수정 페이지로 이동(아니면 모달이 수정하는 모달로 변경)-
삭제하기 -
수정하기
-
-
-
사진 영역: 기존에는 1개만 가능했음 (욕심내면, 여러개 슬라이드 형식으로 가능하게 하고 싶음) -
내용 영역: 게시글 내용
-
-
-
글 작성 화면: 글을 작성하는 화면-
이미지 리사이징
-
-
현재 유저 프로필 화면: 로그인한 현재 유저의 게시물과 대략적인 프로필를 표시하는 화면-
유저 프로필 수정하기: 유저 프로필을 수정하는 화면 (userImage, userDisplayname, userIntro) -
작성 글: 유저가 작성한 작성 글의 image 표 -> 클릭시 post detail-
작성 글 detail view: image 표에서 해당 이미지 클릭시 해당 글 detail view 화면
-
-
로그아웃
-
-
다른 유저 프로필 화면: 다른 유저가 작성한 글의 유저 이름을 클릭하여 해당 유저의 프로필 화면 구현-
프로필 보기: userImage, userDisplayname, userIntro -
작성 글: 유저가 작성한 작성 글의 image 표 -> 클릭시 post detail-
작성 글 detail view: image 표에서 해당 이미지 클릭시 해당 글 detail view 화면
-
-
-
네비게이션 바: 앱로고 - 피드(Home)탭 - 글 작성탭 - 현재 유저 프로필(프로필 수정, 프로필 이동, 로그아웃) 탭- Navigation-profile 눌렀을 때 로그아웃, 프로필 수정, 프로필 이동 드롭 다운 필요
📅 TIL (Today I Learned, 오늘 깨달은 것들)
2021.07.28 사항
작업 개요
Container 구조 리팩토링
- Home
- PostContainer : posts(페이지에 불러온 적절한 posts)
- Post
- PostContainer : posts(페이지에 불러온 적절한 posts)
- Profile
- User
- UserProfileContainer : getInfoPosts(요청 함수), InfoType, PostsType(useSelector로 가져올 state)
- PostContainer : posts(페이지에 불러온 적절한 posts) , postsOnToggle (이미지 테이블과 글 디테일 뷰를 교체하는 함수)
- UserProfile : profileInfo(해당 페이지에 적절한 info), updateProfile(profile update 요청하는 함수)
- ProfilePostImages : posts(페이지에 불러온 적절한 posts) postsOnToggle (이미지 테이블과 글 디테일 뷰를 교체하는 함수)
- UserProfileContainer : getInfoPosts(요청 함수), InfoType, PostsType(useSelector로 가져올 state)
이미지 리사이징
- canvas를 이용한 이미지 리사이징
- file dataUrl을 가지고, Image 생성자를 통해서 Image인스턴스를 만들어서 해당 dataUrl을 src에 적용한 인스턴로 적용시킨 후 resize 함수에 넣어 size를 바꿈
- 이미지 최적화 by 개발자 제이콥
- File API와 이미지 용량 줄이기 by 필요의 개발 docs
const resize = (img, maxSize) => {
let canvas = document.createElement("canvas"),
max_size = maxSize,
width = img.width,
height = img.height;
if (width > height) {
if (width > max_size) {
height *= max_size / width;
width = max_size;
}
} else {
if (height > max_size) {
width *= max_size / height;
height = max_size;
}
}
canvas.width = width;
canvas.height = height;
canvas.getContext("2d").drawImage(img, 0, 0, width, height);
const dataUrl = canvas.toDataURL("image/jpeg");
return dataUrl;
};
export default resize;
- 기본 post에 들어가는 이미지는 max 600 size로 비율을 맞추어 저장
- profile 이미지의 경우 max 300 size로 비율을 맞추어 저장
- firestore storage에서 파일 크기를 살펴보니 엄청나게 줄어드는 것을 확인함
다음에 필요한 사항
- Navigation-profile 눌렀을 때 로그아웃, 프로필 수정, 프로필 이동 드롭 다운 필요
- profile 정보 요청 시기 조정
- 더 빠른 연산을 위해서, 화면이 render 되고 profile에 관련된 정보를 가져오지 말고 profile 보기위해 버튼을 눌렀을 때 부터 미리 profile 정보를 요청하게 하자
- Post Detail View로 이동시 해당 글의 scrollX 위치로 이동하게 구현하기
'Dev > Racstagram_V2' 카테고리의 다른 글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- object
- html
- RUBY
- 오버라이딩
- 기능추가
- instagram CSS
- nodejs
- redux-toolkit
- Git
- React
- github
- 생활코딩
- 트위터 클론
- NomadCoder
- async
- nrc
- todolist
- TypeScirpt
- JavaScript
- Firebase
- project
- css
- 바닐라js
- 그림판 만들기
- 드림코딩
- Python
- Django
- Class
- hooks
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함