Skip to content

Conversation

@Silicagel12
Copy link

요구사항

기본

  • 인풋 조건에 맞지 않으면 에러 메시지가 출력되고 인풋박스에 빨간 테두리가 생깁니다.
  • [x]모든 인풋 조건이 맞지 않으면 회원가입/로그인 버튼이 비활성화 됩니다.
  • 인풋 조건이 모두 맞으면 버튼이 활성화되며 클릭할시 요구되는 페이지로 이동됩니다.

심화

  • [x]눈 모양 아이콘 클릭시 비밀번호의 문자열이 보이기도 하고, 가려지기도 합니다.비밀번호의 문자열이 가려질 때는 눈 모양 아이콘에는 사선이 그어져있고, 비밀번호의 문자열이 보일 때는 사선이 없는 눈 모양 아이콘이 보이도록 합니다.

주요 변경사항

  • 자스 파일을 생성하여 이벤트리스너를 활용하여 페이지가 작동하게끔 수정하였습니다.

스크린샷

image image image image image

멘토에게

  • 어떻게 구현해야할지 모르겠는 기능들은 대부분 인터넷에 검색하여 찾아보았는데 혹시 더 좋은 구현방법이 있는지 궁금합니다.
  • 2, 4요소 모두 충족할때 로그인/회원가입 버튼이 활성화 되는 알고리즘은 생각한것을 투박하게 구현하였는데 이 또한 자스에서 제공하는 기본 함수등으로 구현이 가능한지 궁금합니다.
  • 셀프 코드 리뷰를 통해 질문 이어가겠습니다.

@Silicagel12 Silicagel12 requested a review from kiJu2 July 18, 2025 16:42
@Silicagel12 Silicagel12 added the 매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다. label Jul 18, 2025
@kiJu2
Copy link
Collaborator

kiJu2 commented Jul 22, 2025

스프리트 미션 하시느라 수고 많으셨어요.
정훈님 학습에 도움 되실 수 있게 꼼꼼히 리뷰 하도록 해보겠습니다. 😊

@kiJu2
Copy link
Collaborator

kiJu2 commented Jul 22, 2025

어떻게 구현해야할지 모르겠는 기능들은 대부분 인터넷에 검색하여 찾아보았는데 혹시 더 좋은 구현방법이 있는지 궁금합니다.

처음 자바스크립트에 들어가면 어려울 수 있죠 ㅎㅎㅎ 리뷰 하다가 도움 될만한게 있으면 답변드리겠습니다 !

@kiJu2
Copy link
Collaborator

kiJu2 commented Jul 22, 2025

2, 4요소 모두 충족할때 로그인/회원가입 버튼이 활성화 되는 알고리즘은 생각한것을 투박하게 구현하였는데 이 또한 자스에서 제공하는 기본 함수등으로 구현이 가능한지 궁금합니다.

마찬가지로 코드리뷰를 통해 답변드리겠습니다. 😉

@kiJu2
Copy link
Collaborator

kiJu2 commented Jul 22, 2025

커밋 타입도 한 번 고려해보세요 !

tl;dr:

커밋 메시지 형식

type: Subject

body

footer

기본적으로 3가지 영역(제목, 본문, 꼬리말)으로 나누어졌다.

메시지 type은 아래와 같이 분류된다. 아래와 같이 소문자로 작성한다.

| 태그       | 설명                                                       |
|------------|------------------------------------------------------------|
| `feat`     | 새로운 기능 추가                                           |
| `fix`      | 버그 수정                                                  |
| `docs`     | 문서 내용 변경                                             |
| `style`    | 포맷팅, 세미콜론 누락 등 코드 동작에 영향 없는 변경       |
| `refactor` | 코드 리팩토링                                              |
| `test`     | 테스트 코드 작성                                           |
| `chore`    | 빌드 수정, 패키지 설정 등 운영 코드 변경이 없는 작업       |

원문보기

@kiJu2 kiJu2 changed the base branch from React-류정훈 to Basic-류정훈 July 22, 2025 04:34
Comment on lines +21 to +26
if (value==""){
emailError.textContent = "이메일을 입력해 주세요";
emailError.style.display = "block";
emailInput.classList.add("errorborder");
error.email =0;
}else if(!emailPattern.test(value)){
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 아직 프리티어를 적용하지 않으셨나요 ?

Suggested change
if (value==""){
emailError.textContent = "이메일을 입력해 주세요";
emailError.style.display = "block";
emailInput.classList.add("errorborder");
error.email =0;
}else if(!emailPattern.test(value)){
if (value=="") {
emailError.textContent = "이메일을 입력해 주세요";
emailError.style.display = "block";
emailInput.classList.add("errorborder");
error.email = 0;
} else if(!emailPattern.test(value)) {

사소한 줄바꿈, 띄어쓰기 등 코드를 작성하시다보면 자연스럽게 불규칙해지는 경우가 많아요.
이를 돕기 위해서 개발 커뮤니티에서는 개발 경험 향상을 위한 여러가지 도구들이 있는데요.

보편적으로 많이 사용되는 툴은 prettier입니다 !

Prettier: https://prettier.io/

prettier는 vscode plugin에서 install하고 실행할 수 있습니다 ! 🤗

macos 경우 option + shift + f
windows의 경우 alt + shift + f

}else{
emailError.style.display="none"
emailInput.classList.remove("errorborder");
error.email =1;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

에러가 존재한다면 1 아니라면 0일까요?

Suggested change
error.email =1;
error.email = true;

만약 그렇다면 Number 타입보다 Boolean 타입을 사용하는 것이 메모리 측면과 코드 의사 측면에서 더 유리할 것으로 사료됩니다 😇

}else if(!emailPattern.test(value)){
emailError.textContent = "잘못된 이메일 형식입니다.";
emailError.style.display = "block";
emailInput.classList.add("errorborder");
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

클래스 이름에 띄어쓰기가 명확하지 않은 것 같군요 ..!

Suggested change
emailInput.classList.add("errorborder");
emailInput.classList.add("error-border");

네이밍 컨벤션을 한 번 살펴보면 좋을 것 같아요 ! 😉

네이밍 컨벤션

});

function updateButtonState(){
const validcheck = error.email * error.password;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오잉? 혹시 곱하기가 "두 조건이 참일 경우"를 의미하는걸까요?

만약 boolean으로 바뀐다면 다음과 같이 바꿀 수 있겠네요 !:

Suggested change
const validcheck = error.email * error.password;
const validcheck = error.email && error.password;

});

function updateButtonState(){
const validcheck = error.email * error.password;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

또한 해당 변수도 마찬가지로 네이밍 컨벤션을 따르는게 좋을 것 같아요 !

Suggested change
const validcheck = error.email * error.password;
const validCheck = error.email && error.password;

그리고 만약 boolean일 경우 is-, has-와 같이 의문으로 짓는 경우가 많습니다 !
정훈님과 같은 경우 isValidFormData와 같이 될 수 있겠네요 😉

일반적인 네이밍 컨벤션 보기

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(심화/생각해보기) signup.jslogin.js... 중복된 로직이 있으면 점점 복잡해질 수 있습니다 ~! 😊

여러 페이지에서 비슷한 기능을 하는 코드들이 반복되고 있다면?

로그인, 회원가입 등 페이지마다 공통적인 유효성 검사나 동작이 존재하는 경우가 많습니다.
이러한 로직을 각 JS 파일에 그때그때 작성하게 되면 아래와 같은 문제가 생길 수 있어요:

  • 로직 수정 시, 모든 파일을 수정해야 해요.
  • 서로 약간씩 다른 방식으로 유사한 로직을 구현하게 되면 버그 발생 가능성이 증가합니다.
  • 공통 로직의 변화가 전체 페이지에 ripple effect(연쇄 영향)를 줄 수 있어요.

이처럼 중복된 코드가 많아질수록, 전체 프로젝트의 유지보수 비용은 계속 높아지게 됩니다.

그렇다면 어떻게 할까?

그렇다면 어떻게 할 수 있을까요?

재사용이 필요한 로직은 별도 모듈로 분리해서 관리하고,
각 페이지는 해당 모듈을 가져와 사용하는 방식으로 구성해보는 건 어떨까요?

// validate.js
export function isValidEmail(email) { ... }
export function isValidPassword(password) { ... }
// sign-in.js
import { isValidEmail } from './validate.js';

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

그럼 언제 분리 해야하는거지?

사실 이건 “경험”으로 익혀가는 부분이지만, 아래와 같은 신호가 있다면 분리를 고려해볼 수 있어요:

  • "어? 이 함수 다른 데서도 쓸 것 같은데?"
  • "이거 수정하려면 다른 JS 파일에도 가서 고쳐야 하네?"
  • "이 기능이 특정 페이지에만 종속되지 않아!"
    어떻게 하면 더 나은 설계를 할 수 있을까?”를 고민하는 건 아주 중요한 개발자의 태도예요.
    정답은 없지만, 재사용성과 유지보수성이라는 기준을 계속 떠올리면서 코드를 분리하는 연습을 하다 보면,
    더욱 확장성 있는 구조를 만들 수 있게 됩니다.

@kiJu2
Copy link
Collaborator

kiJu2 commented Jul 22, 2025

수고하셨습니다 정훈님 ~!
익숙하지 않은 부분에도 직접 찾아보면서 최적의 솔루션을 찾아가는 모습이 잘 느껴지는 코드였어요 !
이렇게 문제들을 해결해가는 과정 자체가 정훈님께 귀중한 학습 경험이 될거란 것을 확신합니다 😉

이번 미션도 정말 수고 많으셨어요 정훈님 😊😊😊
궁금하신 점 있으시면 편하게 DM주세요 ~!

@kiJu2 kiJu2 merged commit 222b6cc into codeit-bootcamp-frontend:Basic-류정훈 Jul 22, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

매운맛🔥 뒤는 없습니다. 그냥 필터 없이 말해주세요. 책임은 제가 집니다.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants