-
Notifications
You must be signed in to change notification settings - Fork 0
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
KDT0_JiHongKyu 직원 관리 시스템 #43
base: main
Are you sure you want to change the base?
Conversation
오...회원 정보에 주소찾기를 통해 주소 정보를 넣는 거 꼭 도전해보고 싶네요!! |
와 아니 검색기능 하신거 대단하시네요 저도 이번에 코드 참고하여 검색기능 구현해보도록 하겠습니다.! |
write.js에서 valid함수들을 보면 메시지들의 클래스에 active를 추가하는 코드가 지속적으로 반복되는 것 같습니다. html에서 미리 각 메시지에 대한 영역을 만들어두고 클래스를 컨트롤 함으로써 display를 변경시키는 방식을 사용하신 것 같은데, 하나의 message 영역만을 만들어두고 자바스크립트로 동적으로 결과를 출력해주는 방식은 어떨까요? 어떤 영역에 대한 메시지인지, 성공인지 실패인지를 인수로 받는 함수를 만들어 이벤트에 적용시키면 중복되는 코드들의 가독성이 좋아질 것 같습니다. |
전체적인 UI가 너무 깔끔한 것 같아요! |
Debounce를 활용한 검색 기능, 주소 API등 저도 활용하고 싶은게 많네요! UI도 깔끔하고, 모바일 화면도 매끄럽고 좋습니다👍👍 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
홍규님 과제하시느라 고생하셨습니다~
aws s3 사용도 적절히 잘해주시고 디자인 과 애니메이션도 깔끔하게 잡아주신거같습니다~
추후에는 돔 이벤트 관련한 부분만 고민해주시면 좋을꺼같습니다~
getItem.forEach((item) => { | ||
createStaffList(item); | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
작성해주신 forEach 코드가 중복되어보입니다 동일한 동작을 하는 코드이기에 아래처럼 개선할수있을꺼같습니다~
if(!getItem){
...
localStorage.setItem('infos', JSON.stringify(data));
getItem = data;
}
getItem.forEach((item) => {
createStaffList(item);
});
tr.addEventListener('click', function () { | ||
const data = JSON.stringify(item); | ||
localStorage.setItem('lately-info', data); | ||
modal.classList.add('active'); | ||
modalSelect.classList.add('active'); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
createStaffList 함수가 싱행될떄 마다 tr 에 이벤트 리스너가 등록되고있습니다
만약 데이터가 100개가 넘는다면 이벤트 리스너가 100개 넘게 등록되는 구조여서 성능이 좋지가 않습니다
이럴땐 tr 에 부모 엘리먼트에 이벤트를 추가 하는 이벤트 위임 방식을 사용해주시면 좋습니다~
email: write['email'].value, | ||
phone: write['phone'].value, | ||
address: write['address'].value, | ||
imageUrl: `https://hong-upload-image.s3.ap-northeast-2.amazonaws.com/${uploadFile.name ?? uploadFile}` |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이러한 https://hong-upload-image.s3.ap-northeast-2.amazonaws.com 주소 문자열 같은경우는 상수로 선언하여 관리해주시면 추후 유지보수가 쉬워집니다~
const profileAddress = document.querySelector('.address'); | ||
const profileImage = document.querySelector('.image'); | ||
const staffInfoEdit = document.querySelector('.staff-info-edit'); | ||
const data = JSON.parse(localStorage.getItem('lately-info')); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
로컬 스토리지에서 데이터를 가져올때는 데이터가 있는지 없는지에 대한 예외처리를 해주시는게 좋습니다~
const phone1 = data['phone'].slice(0, 3); | ||
const phone2 = data['phone'].slice(3, 7); | ||
const phone3 = data['phone'].slice(7); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
핸드폰 관련한 코드가 다른 파일에서도 반복적으로 나오고있는거같습니다 이럴경우 아래처럼 함수로 만들어서 재사용하시는걸 추천드립니다~
function formatPhone(phoneNumber) {
const phone1 = phoneNumber.slice(0, 3);
const phone2 = phoneNumber.slice(3, 7);
const phone3 = phoneNumber.slice(7);
return `${phone1}-${phone2}-${phone3}`;
}
write['name'].value = latelyInfo['name']; | ||
write['email'].value = latelyInfo['email']; | ||
write['phone'].value = latelyInfo['phone']; | ||
write['address'].value = latelyInfo['address']; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
이 코드를 element 상랑 같이 사용하면 코드가 아래처럼 개선될꺼같습니다~
element.forEach((el) => {
write[el].value = latelyInfo[el];
});
🙍♂️ 직원 관리 시스템
HTML, CSS, Javascript로 만든 직원 관리 시스템
➡️ 직원 관리 시스템 둘러보기
🖥️ 프로젝트 소개
직원 등록, 수정, 삭제가 가능한 직원 관리 시스템입니다.
목적: Vanilla JS 실력 향상을 위해 CRUD 구현
특이점: LocalStorage를 이용한 데이터 저장
📆 제작 기간
2023년 08월 08일 ~ 2023년 08월 18일
필수 요구사항
✅“AWS S3 / Firebase 같은 서비스”를 이용하여 사진을 관리할 수 있는 페이지를 구현
✅프로필 페이지를 개발
✅스크롤이 가능한 형태의 리스팅 페이지를 개발
✅전체 페이지 데스크탑-모바일 반응형 페이지를 개발
✅사진을 등록, 수정, 삭제가 가능
✅유저 플로우를 제작하여 리드미에 추가
✅CSS - 애니메이션 구현, 상대수치 사용(rem, em)
✅JavaScript - DOM event 조작
🚀 기술스택
📝 기능 구현
1. 리스트 페이지
table
태그로 리스트 구현hover
시 구분가능하도록 리스트 색 변경2. 직원 등록 페이지
3. 직원 상세 페이지
4. 직원 수정 페이지
5. 모바일 반응형
@media
를 사용하여 모바일 UI 구현🙄 User Flow
✍ 개선 사항