Notice
Recent Posts
Recent Comments
Link
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 객체를 배열로
- js 문자열을 문자배열로
- indexOf()
- 객체의 밸류값만 찾기
- 중복단어제거
- 코딩 어?
- 문자열순서바꾸기
- 단어 제거
- 깃 토큰 만료
- @Moditying @Query
- 배엘에서 스왑
- 중복된 단어
- 프론트엔드 스쿨
- sql 문자열 패턴 검색
- 5.3.8 Modifying Queries
- 스프링 데이타 JPA
- 시퀄 문법
- lastIndexOf()
- ubuntu타임존
- 문자열 중복
- sql like연산자
- 중복문자제거
- 레디스 확인
- 우분투 시간 변경
- 중복 문자열
- 제로베이스
- 배열을 객체로
- ...점점점문법
- 객체의키값만 찾기
- 재귀스왑
Archives
- Today
- Total
코딩기록
JS) js 코드 작성 순서 / 예시 - 별점등록 본문
728x90
js 코드를 작성할때는 구조화된 단계적 접근이 중요하다.
일반적으로는 기능 정의 → DOM 조작 → 핵심 로직 → 이벤트 처리 → UI 업데이트 순으로 코드가 작성된다.
JavaScript 코드를 짤 때 일반적인 작성 순서:
- 목표 정의 및 요구 사항 분석:
- 먼저 코드가 해결하고자 하는 문제를 명확히 정의합니다.
- 어떤 기능을 만들지, 그 기능을 어떻게 구현할지에 대해 설계하고 계획을 세웁니다.
- DOM 요소 선택 및 초기 설정:
- DOM을 조작할 요소들을 선택합니다. 예를 들어, querySelector나 querySelectorAll로 HTML 요소를 선택합니다.
- 필요한 초기 상태나 설정을 해줍니다. 예를 들어, data-* 속성을 읽거나 초기화 작업을 합니다.
- 핵심 로직 구현:
- 주요 로직을 구현합니다. 예를 들어, 클릭 이벤트 핸들러, 애니메이션 처리, 계산 로직 등을 작성합니다.
- 이 단계에서 대부분의 기능 구현이 이루어집니다.
- 함수 단위로 모듈화하여 재사용성을 고려할 수 있습니다.
- 이벤트 핸들러 설정:
- 이벤트 리스너를 설정합니다. 사용자 상호작용(클릭, 마우스오버 등)을 처리할 수 있도록 이벤트 핸들러를 추가합니다.
- 이벤트가 발생할 때 어떤 행동을 할지 정의합니다.
- 스타일 및 UI 업데이트:
- UI를 변경하는 로직을 추가합니다. DOM을 수정하거나 스타일을 변경할 때 사용합니다.
- 예를 들어, 버튼 클릭 시 색상을 바꾼다거나, 별점을 하이라이트하는 등의 작업입니다.
- 에러 처리 및 예외 처리:
- 예상치 못한 상황에서 오류를 방지하고, 예외가 발생할 경우 어떻게 처리할지 결정합니다.
- try-catch 블록 등을 사용하여 예외 처리를 할 수 있습니다.
- 디버깅 및 테스트:
- 작성한 코드를 디버깅하고 테스트합니다. 콘솔 로그를 이용해 코드를 추적하고, 브라우저에서 테스트를 수행하여 버그를 수정합니다.
- 최적화 및 리팩토링:
- 코드가 정상적으로 작동하는 것을 확인한 후, 더 효율적이고 깔끔하게 리팩토링합니다.
- 중복 코드를 제거하고, 성능을 고려하여 최적화합니다.
방금 예시 코드의 작성 순서:
- DOM 요소 선택:
- document.querySelectorAll('.star-rating') 등으로 DOM 요소를 선택합니다.
- 스타일 및 초기화:
- 별점 시스템을 구성하기 위해 별 아이콘을 동적으로 추가합니다.
- 스타일을 동적으로 추가하는 부분도 포함됩니다. (link 태그 추가)
- 핵심 로직 구현:
- createStarRating 함수에서 별을 생성하고, 상태(클릭된 별점, 호버된 별)를 업데이트하는 로직을 구현합니다.
- 이벤트 핸들러 설정:
- mouseover, mouseout, click 이벤트 리스너를 설정하여 사용자 상호작용을 처리합니다.
- UI 업데이트:
- 별점 UI를 실시간으로 업데이트하여 사용자가 별점을 클릭하거나 호버할 때 반영됩니다.
- 이벤트 전파:
- rating-change 이벤트를 발생시켜 다른 컴포넌트에 별점 변경을 알립니다.
세분화 해서 별점 등록 코드의 코드 작성 순서를 적었다.
1. 요구 사항 분석
- 구현할 기능과 동작을 명확히 정의합니다.
- 예: "별점을 표시하고, 클릭 시 선택된 별점을 고정하며, 별점이 변경되면 이벤트를 발생시킨다."
- 입력(HTML 구조)과 출력(화면 표시, 이벤트 처리)을 명확히 이해합니다.
2. HTML 및 CSS 구조 파악
- HTML: DOM 요소의 구조를 확인하고 필요한 데이터를 추출합니다.
- 예: .star-rating 컨테이너의 data-max-rating 속성.
- CSS: 필요한 시각적 효과를 제공하는 스타일 클래스를 정의합니다.
- 예: .star 클래스와 filled 상태를 구분.
3. 계획 수립 및 주요 함수 설계
- 기능을 작은 단위로 나눕니다. 각 단위는 독립적인 함수를 만듭니다.
- 예:
- 별 생성 함수: createStars($container, maxRating)
- 상태 업데이트 함수: updateStars(stars, rating)
- 이벤트 리스너 함수: attachEventListeners(...)
- 예:
- 코드 흐름을 설계합니다.
- 데이터를 초기화 → 동작 추가 → UI 업데이트 → 사용자 입력 처리.
4. DOM 접근 및 데이터 초기화
- HTML에서 동작할 컨테이너 요소를 가져옵니다.
- 예: document.querySelectorAll('.star-rating').
- 필요한 데이터를 읽고(예: data-max-rating), 초기 상태를 설정합니다.
5. UI 동적 생성
- 필요한 HTML 요소(예: 별)를 동적으로 생성합니다.
- 예: document.createElement('span')를 사용하여 별 생성.
- 생성된 요소를 DOM에 추가합니다.
6. 상태 관리 및 동작 구현
- 별점의 상태를 관리할 변수를 정의합니다.
- 예: let currentRating = 0.
- 상태를 기반으로 UI를 업데이트하는 로직을 구현합니다.
- 예: updateStars()로 별의 시각적 상태 변경.
7. 이벤트 처리
- 사용자의 동작(클릭, 마우스 오버 등)을 처리하는 이벤트 핸들러를 작성합니다.
- 예: mouseenter, mouseleave, click 이벤트.
- 이벤트 핸들러에서 상태를 변경하고, 변경 사항을 UI와 연결합니다.
8. 이벤트 디스패치 및 외부와의 연결
- 특정 상태 변경 시 외부에서도 이를 감지할 수 있도록 이벤트를 디스패치합니다.
- 예: new CustomEvent('rating-change', { detail: currentRating }).
9. 테스트 및 디버깅
- 모든 동작이 올바르게 작동하는지 확인합니다.
- 마우스 오버, 클릭, 상태 업데이트 등.
- 브라우저 개발자 도구를 사용하여 DOM 구조와 이벤트를 확인합니다.
10. 최적화 및 코드 정리
- 중복된 코드가 없는지 확인하고 함수화합니다.
- 필요한 부분만 모듈화하여 다른 곳에서도 재사용 가능하도록 구성합니다.
예시 코드 작성 순서
- DOM 요소 가져오기:
const $containers = document.querySelectorAll('.star-rating'); - 데이터 초기화:
const maxRating = parseInt($container.getAttribute('data-max-rating')) || 5; - UI 생성:
const stars = createStars($container, maxRating); - 상태 업데이트:
updateStars(stars, currentRating); - 이벤트 리스너 추가:
attachEventListeners($container, stars, setRating, updateStars); - CustomEvent 처리:
const ratingChangeEvent = new CustomEvent('rating-change', { detail: currentRating });
요약
- 요구 사항 분석
- HTML/CSS 파악
- 기능 설계 및 함수 분리
- DOM 접근 및 초기화
- UI 생성
- 상태 관리
- 이벤트 처리
- 테스트 및 최적화
이 순서를 따르면 논리적이고 확장 가능한 코드를 작성할 수 있습니다. 😊
반응형
'프론트' 카테고리의 다른 글
JavaScript를 공부하면서 느낀점 (0) | 2024.12.31 |
---|---|
css) carousel 캐러셀/스라이드쇼/이미지로케이터. 스크린리더 사용자를 위한 접근성. carousel wai-aria. 이미지카드-figure, figcaption (0) | 2024.10.31 |
css) ul > li > a 구조 flex, grow, flex-grow 이용한 로그인바 링크 배치 (6) | 2024.10.31 |
html/css 3depth 네비게이션 메뉴 / 세로 아코디언 메뉴 (12) | 2024.10.29 |
HTML/CSS를 공부하면서 느낀점 (5) | 2024.10.24 |
Comments