Skip to content

Latest commit

Β 

History

History
107 lines (100 loc) Β· 4.76 KB

File metadata and controls

107 lines (100 loc) Β· 4.76 KB

[22.02.10.Thu] - Day 12

Vanilla JS

  • μ—λŸ¬ 핸듀링
    • JSλŠ” μ—λŸ¬ λ°œμƒν•˜λ©΄ μ—λŸ¬ λ°œμƒν•œ κ³³μ—μ„œ λ©ˆμΆ°λ²„λ¦¬κ³  μ•„λž˜ μ½”λ“œλŠ” μ‹€ν–‰λ˜μ§€ μ•ŠμŒ
      • ex. 화면이 열리닀 쀑단될 수 있음
    • try ... catch ꡬ문
      • μ—λŸ¬ λ°œμƒν•˜λ”λΌλ„ λ©ˆμΆ°λ²„λ¦¬μ§€ μ•Šκ³  λ‹€μŒ μ½”λ“œ μ‹€ν–‰λ˜λ„λ‘ λ§Œλ“€μ–΄ 쀌
      • 예기치 λͺ»ν•œ μ—λŸ¬ λ°œμƒν•˜λ”λΌλ„ λ‹€μŒ μ½”λ“œ μ‹€ν–‰ κ°€λŠ₯
      • catch κ΅¬λ¬Έμ—μ„œ μ—λŸ¬ μž‘μ•„μ„œ 정보성 μ—λŸ¬ ν‘œμ‹œ (ν”„λ‘œκ·Έλž¨ 쀑단 X)
      • ex. μ™ΈλΆ€μ—μ„œ μ œκ³΅ν•΄μ£ΌλŠ” API 데이터 λ°›μ•„μ˜¬ λ•Œ μ—λŸ¬ λ°œμƒ κ°€λŠ₯
        • μž‘μ€ μ—λŸ¬ ν•˜λ‚˜ λ°œμƒν•΄μ„œ λ‚˜λ¨Έμ§€ 데이터 λͺ¨λ‘ ν‘œμ‹œ μ•ˆλ  수 있음
        • μ‚¬μš©μž κ²½ν—˜ μ•ˆμ’‹κ²Œ λ˜λŠ” 문제 λ°œμƒ κ°€λŠ₯
        • λ‚΄κ°€ control ν•  수 μ—†λŠ” μ½”λ“œ 뢀뢄에 ν•œν•΄μ„œλ§Œ try catch ꡬ문 μž‘μ„±ν•˜κΈ°!
        • λͺ¨λ“  κ΅¬λ¬Έμ—μ„œ μž‘μ„±ν•  ν•„μš” μ—†μŒ
        • μ‹€λ¬΄μ—μ„œ 사싀 거의 μ‚¬μš©ν•˜μ§€λŠ” μ•ŠμŒ
          • 개발 μ„œλ²„μ—μ„œ ν…ŒμŠ€νŠΈν•  λ•Œ λ‹€ ν‘œμ‹œλ¨
          • μ¨λ“œ 파트 라이브러리 (μ™ΈλΆ€ μ‹œμŠ€ν…œ)λ‘œλΆ€ν„° 데이터 톡신할 λ•ŒλŠ” μš°λ¦¬κ°€ λͺ¨λ₯΄λŠ” μž₯μ•  λ°œμƒ κ°€λŠ₯
          • 그럴 κ²½μš°λ„€λŠ” try ... catch ꡬ문 μ‚¬μš©ν•΄μ•Ό 함
          • catch κ΅¬λ¬Έμ—μ„œ μ—λŸ¬ 처리 κ°€λŠ₯
      • 비동기 처리 κ΄€λ ¨
        • ex. try ꡬ문 μ•ˆ setTimeout() μ—μ„œ μ—λŸ¬ λ°œμƒν•˜λ©΄ catch κ΅¬λ¬Έμ—μ„œ μ•ˆμž‘νž˜...
          • setTimeout 비동기 ν•¨μˆ˜ λ‚΄μ˜ 콜백 ν•¨μˆ˜μ—μ„œ try ... catch ꡬ문 μ‚¬μš©ν•΄μ•Ό 함
      • finally ꡬ문은 μ—λŸ¬ λ‚˜λ“  μ•ˆλ‚˜λ“  상관없이 무쑰건 μ‹€ν–‰ν•  ꡬ문 μž‘μ„±
        • ex. μ—‘μ…€ 파일 close κ΄€λ ¨ν•΄μ„œ finally κ΅¬λ¬Έμ—μ„œλŠ” λ°˜λ“œμ‹œ μ‚¬μš© (μžλ°”, λ…Έλ“œ; μ„œλ²„ ν”„λ‘œκ·Έλž˜λ°)
        • 가독성 κ΄€λ ¨ν•΄μ„œλ„ μž‘μ„± κ°€λŠ₯
      • μΌλΆ€λŸ¬ μ—λŸ¬ λ°œμƒμ‹œν‚¬ μˆ˜λ„ μžˆμ§€λ§Œ 사싀 거의 κ·Έλ ‡κ²Œ ν•˜μ§€λŠ” μ•ŠμŒ
    • μ—λŸ¬μ˜ μ’…λ₯˜
      • ReferenceError; μ°Έμ‘° μ—λŸ¬
      • TypeError; νƒ€μž… μ—λŸ¬
      • SyntaxError; ꡬ문 μ—λŸ¬
  • script mode
    • ES5, μ—„κ²©ν•œ λͺ¨λ“œ
    • 'use strict';
    • JSκ°€ μ•”λ¬΅μ μœΌλ‘œ ν—ˆμš©ν–ˆλ˜ μ—λŸ¬λ“€μ„ μž‘μ•„μ€Œ
  • μ •κ·œμ‹
    • λ¬Έμžμ—΄μ—μ„œ λ‚΄κ°€ μ›ν•˜λŠ” νŠΉμ • λ¬Έμžμ—΄ νŒ¨ν„΄ μ°Ύμ•„λ‚΄κΈ°
    • μ •κ·œμ‹ λ‚΄μž₯ ν•¨μˆ˜
      • test
        • boolean κ°’ λ°˜ν™˜
        • regexp.test(str)
        • μ •κ·œμ‹μ΄ str에 νŒ¨ν„΄ 있으면 true return
    • λ¬Έμžμ—΄ λ‚΄μž₯ ν•¨μˆ˜
      • search
        • str.search(regexp)
        • str에 regexp νŒ¨ν„΄ 있으면 처음 인덱슀 번호 λ°˜ν™˜
        • indexOf λ©”μ„œλ“œλ‘œ λ‹¨μˆœν•˜κ²Œ 찾을 μˆ˜λŠ” μžˆμ§€λ§Œ
          λ³΅μž‘ν•œ νŒ¨ν„΄ μžˆμ„ λ•Œ search λ©”μ„œλ“œ ν™œμš© κ°€λŠ₯
      • match
        • str.match(regexp)
        • str에 regexp νŒ¨ν„΄ μžˆλŠ”κ²ƒ λ‹€ μ°Ύμ•„μ„œ 배열에 λ‹΄μ•„μ€Œ
    • μ€‘κ΄„ν˜ΈλŠ” κΈ€μžμˆ˜ μ œν•œ
    • λŒ€κ΄„ν˜Έ λ°– ^와 $λŠ” 각각 μ‹œμž‘/μ’…λ£Œ νŒ¨ν„΄
    • +λŠ” μ΅œμ†Œ 1개 이상
    • *λŠ” 0개 이상 (μžˆμ„ μˆ˜λ„ 있고 없을 μˆ˜λ„ 있음)
    • ?λŠ” 0개 λ˜λŠ” 1개
    • ex. 이메일 체크 μ •κ·œμ‹
      • 이메일 ν˜•μ‹μ€ λ§žμ§€λ§Œ μ‹€μ œλ‘œ 이메일이 μ‘΄μž¬ν•˜λŠ”μ§€ ν™•μΈν•˜λ €λ©΄?
        • κ·Έκ²ƒλ§Œ μ œκ³΅ν•΄μ£ΌλŠ” μ„œλΉ„μŠ€λ„ 있음 (μ΄νƒˆλ¦¬μ•„ μ„œλΉ„μŠ€)
          • κ΅¬λ…μž BM
        • μ‹€μ œλ‘œ 메일 λ³΄λ‚΄μ„œ ν™•μΈν•΄μ„œ λ°˜μ†‘ν•΄μ£ΌλŠ” 것 κ΅¬ν˜„ν•˜λŠ” 것 쉬움
          • 이메일 ν…ŒμŠ€νŠΈ μ„œλ²„
          • email-existence λͺ¨λ“ˆ 있음 (npm)
            • λͺ¨λ“  메일 처리 λͺ»ν•˜λŠ” 단점 쑴재
  • DOM
    • μ‹œμž‘; element μ ‘κ·Ό (μ°ΎκΈ°)
      • id둜 μ ‘κ·Ό
        • document.getElementById('')
      • νƒœκ·Έλ‘œ μ ‘κ·Ό
        • document.getElementsByTagName('')
        • λ°°μ—΄ return
      • 클래슀둜 μ ‘κ·Ό
        • document.getElementsByClassName('')
      • element 속성 쀑 name을 μ΄μš©ν•˜λŠ” 방법
    • 이후 element 속성 κ°’ μ œμ–΄ (get, set)
    • element에 λŒ€ν•œ event μ œμ–΄
    • element에 λŒ€ν•œ λ””μžμΈ μŠ€νƒ€μΌ μ œμ–΄

[Note]

  • μ •κ·œμ‹ μΆ©λΆ„νžˆ μ΄ν•΄ν•˜κΈ°!
    • μ •κ·œμ‹ μ•Œμ•„λ„ λ§Œλ“œλŠ” 것이 쉽지 μ•ŠμŒ
    • ex. ν•Έλ“œν° 번호
  • json-server λΉ„μŠ·ν•œ GUI μ‹œκ°μ μΈ 툴인 Postman
  • DOM; Document Object Model
    • DOM 트리
    • html
      • head
      • body
        • label, input, br, button, ...
  • jQueryμ—μ„œλŠ” DOM μ ‘κ·Όν•˜λŠ” 것을 ν•¨μˆ˜λ‘œ μ œκ³΅ν•΄μ„œ νŽΈν–ˆμ—ˆμŒ
  • ꢁ금증
    • DOM attribute 속성 κ°’ 직접 μ œμ–΄ vs. getAttribute('')
    • μ‹€μ‹œκ°„ 데이터 μ—¬λΆ€λ‘œ ꡬ뢄됨
  • select λ°•μŠ€μ—μ„œ μ„ΈλΆ€ select에 λŒ€ν•œ 정보λ₯Ό DBλ‘œλΆ€ν„° λ°›μ•„μ˜€κΈ° 전에 disabled => λ°›μ•„μ˜€λ©΄ 풀도둝 처리 κ°€λŠ₯
  • μ‹œμŠ€ν…œμ—μ„œλŠ” country code둜 관리해야 함
    • country list json 정보 μ œκ³΅ν•΄μ£ΌλŠ” μ™ΈλΆ€ 라이브러리 있음
    • country list excel
      • DBμ—μ„œ excel import κ°€λŠ₯
  • λ‹¨μˆœν•œ μ„œλΉ„μŠ€ κ΅¬ν˜„ ν•˜λ‚˜λ§ŒμœΌλ‘œλ„ B2B μ„œλΉ„μŠ€ 운영 κ°€λŠ₯