λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

λ…μ„œ λͺ©λ‘/λͺ¨λ”₯λ‹€ Modern JS Deep Dive

[λͺ¨λ”₯λ‹€] 02μž₯ μžλ°”μŠ€ν¬λ¦½νŠΈλž€?

728x90

2.1 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ 탄생

- λ„·μŠ€μΌ€μ΄ν”„. μ›ΉνŽ˜μ΄μ§€μ˜ 보쑰적인 κΈ°λŠ₯ μˆ˜ν–‰μ„ μœ„ν•΄ κ²½λŸ‰ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄ λ„μž…. 

- 브렌던 아이크가 κ°œλ°œν•¨. 

 

2.2. μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν‘œμ€€ν™”

- λΈŒλΌμš°μ €μ— 따라 μ›ΉνŽ˜μ΄μ§€κ°€ μ •μƒμ μœΌλ‘œ λ™μž‘ν•˜μ§€ μ•ŠλŠ” : 크둜슀 λΈŒλΌμš°μ§• 이슈 λ°œμƒ

 - μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ ν‘œμ€€ν™” μš”μ²­ -> ECMA

 

2.3 μžλ°”μŠ€ν¬λ¦½νŠΈ μ„±μž₯의 역사

- μ΄ˆμ°½κΈ°μ—” μ„œλ²„λ‘œλΆ€ν„° 받은 HTML, CSSλ₯Ό λ‹¨μˆœνžˆ λ Œλ”λ§ ν•˜λŠ” μˆ˜μ€€μ΄μ˜€μŒ. 

- λ Œλ”λ§ : HTML, CSS, JS 둜 μž‘μ„±λœ λ¬Έμ„œλ₯Ό 해석 -> λΈŒλΌμš°μ €μ— μ‹œμž‘μ μœΌλ‘œ 좜λ ₯ν•˜λŠ” 것을 말함. 

 

2.3.1 Ajax

JSλ₯Ό μ΄μš©ν•΄ μ„œλ²„μ™€ λΈŒλΌμš°μ €κ°€ 비동기 λ°©μ‹μœΌλ‘œ 데이터λ₯Ό κ΅ν™˜ν•  수 μžˆλŠ” 톡신 κΈ°λŠ₯. 

- μ΄μ „μ—λŠ” μ™„μ „ν•œ HTML μ½”λ“œλ₯Ό λ°›μ•„μ„œ 전체λ₯Ό λ Œλ”λ§ -> 화면이 μ „ν™˜λ˜λ©΄ μ„œλ²„λ‘œλΆ€ν„° μƒˆλ‘œμš΄ HTML을 λ°›κ³  전체λ₯Ό λ‹€μ‹œ λ Œλ”λ§. 

-> λ³€κ²½ν•  ν•„μš” μ—†λŠ” λΆ€λΆ„κΉŒμ§€ λ‹€μ‹œ λ°›μ•„μ˜€κΈ° λ•Œλ¬Έμ— λΆˆν•„μš”ν•œ 톡신 λ°œμƒ, μ„±λŠ₯λ©΄μ—μ„œλ„ 별루. 

 

Ajax : λ³€κ²½ν•  ν•„μš”κ°€ μ—†λŠ” 뢀뢄은 λ‹€μ‹œ λ Œλ”λ§ ν•˜μ§€ μ•Šκ³ , ν•„μš”ν•œ λ°μ΄ν„°λ§Œ 전솑 λ°›μ•„ λ³€κ²½ν•΄μ•Όν•˜λŠ” λΆ€λΆ„λ§Œ ν•œμ •μ μœΌλ‘œ λ Œλ”λ§ν•˜λŠ” 방식. => λΉ λ₯Έ μ„±λŠ₯, λΆ€λ“œλŸ¬μš΄ ν™”λ©΄ μ „ν™˜μ΄ κ°€λŠ₯해짐. 

 

2.3.2 jQuery

DOM 을 λ”μš± μ‰½μ œ μ œμ–΄ κ°€λŠ₯, 크둜슀 λΈŒλΌμš°μ§• 이슈 μ–΄λŠμ •λ„ ν•΄κ²°. 

 

2.3.3 V8 μžλ°”μŠ€ν¬λ¦½νŠΈ μ—”μ§„

더 빨리 λ™μž‘ν•˜λŠ” JS μ—”μ§„μ˜ ν•„μš”μ„± -> V8 은 λΉ λ₯Έ μ„±λŠ₯을 λ³΄μ—¬μ€Œ. 

μ„œλ²„μ— 있던 λ‘œμ§λ“€μ΄ λŒ€κ±° FE 둜 이동, FEκ°€ μ£Όλͺ©λ°›λŠ” 계기가 λ˜μ—ˆλ‹€. 

 

2.3.4 Node.js

- 2009λ…„ 라이언 달이 λ°œν‘œν•œ JS λŸ°νƒ€μž„ ν™˜κ²½

- JS 엔진을 λΈŒλΌμš°μ €μ—μ„œ λ…λ¦½μ‹œν‚¨ μ‹€ν–‰ν™˜κ²½. (λΈŒλΌμš°μ €μ— μžˆλŠ” console 을 λ–Όμ˜¨κ±΄κ°€?)

- λ°±μ—”λ“œμ™€ ν”„λ‘ νŠΈμ—”λ“œ λ‘˜ λ‹€ μ‚¬μš©μ΄ κ°€λŠ₯ν•΄μ‘Œλ‹€. (크둜슀 ν”Œλž«νΌμ΄ κ°€λŠ₯)

 

2.3.5 SPA ν”„λ ˆμž„ μ›Œν¬

- CBD 방법둠 (Component based development) : μ»΄ν¬λ„ŒνŠΈ 기반 개발

- SPA Single Page Application - λ¦¬μ—‘νŠΈ, λ·°, μ—₯귀러 λ“±,,

 

 

 

2.4 μžλ°”μŠ€ν¬λ¦½νŠΈμ™€ ECMAScript

- ECMAScript : 핡심 문법을 κ·œμ •ν•¨. 

- 각 λΈŒλΌμš°μ € μ œμ‘°μ‚¬κ°€ ECMAScript κ·œμ •μ— 맞좰 λΈŒλΌμš°μ €μ— λ“€μ–΄κ°€λŠ” JS 엔진을 κ΅¬ν˜„ν•œλ‹€.

- 즉, JSλŠ” 

ECMAScript λΌλŠ” ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ˜ κΈ°λ³Έ λΌˆλŒ€ + ν΄λΌμ΄μ–ΈνŠΈ μ‚¬μ΄λ“œ Web API (DOM, BOm ... λ“±λ“±) 을 μ•„μš°λ₯΄λŠ” κ°œλ…μž„. 

 

 

2.5 μžλ°”μŠ€ν¬λ¦½νŠΈμ˜ νŠΉμ§•

- μ›Ή λΈŒλΌμš°μ €μ—μ„œ λ™μž‘ν•˜λŠ” μœ μΌν•œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄

 - 인터프리터 μ–Έμ–΄ (λ³„λ„μ˜ 컴파일 μž‘μ—…μ„ μ§„ν–‰ν•˜μ§€ μ•ŠμŒ. )

-> μ‹€ν–‰νŒŒμΌ λ”°λ‘œ μ—†μŒ, μ‹€ν–‰ 단계인 λŸ°νƒ€μž„μ— λ¬Έ λ‹¨μœ„λ‘œ ν•œμ€„μ”© 싀행됨, μ½”λ“œ μ‹€ν–‰μ‹œλ§ˆλ‹€ μΈν„°ν”„λ¦¬νŠΈ 과정이 반볡 μˆ˜ν–‰λ¨. 

-> 비ꡐ적 느린 편

- ν˜„μž¬λŠ” 단점을 λ³΄μ•ˆν–ˆκΈ° λ•Œλ¬Έμ— μΈν„°ν”„λ¦°νŠΈ 와 컴파일 μ–Έμ–΄μ˜ 경계가 λͺ¨ν˜Έν•΄μ§€κ³  μžˆλ‹€. 

 

VS 컴파일러 μ–Έμ–΄

 - μ½”λ“œκ°€ μ‹€ν–‰λ˜κΈ° μ „ 단계인 컴파일 νƒ€μž„μ— μ†ŒμŠ€ μ „μ œλ₯Ό λ¨Έμ‹  μ½”λ“œλ‘œ λ³€ν™˜ ν›„ μ‹€ν–‰. 

- μ‹€ν–‰ νŒŒμΌμ„ μƒμ„±ν•œλ‹€.

- 컴파일 단계 - μ‹€ν–‰ 단계가 λΆ„λ¦¬λ˜μ–΄ μžˆλ‹€. 

- μ»΄νŒŒμΌμ€ 단 ν•œλ²ˆ μˆ˜ν–‰λœλ‹€. 

- μ½”λ“œ μ‹€ν–‰ 속도가 λΉ λ₯΄λ‹€.

(μš”μ¦˜μ€ 별 차이 μ—†λ‹€κ³  μ•Œκ³  μžˆλ‹€.)

 

 

 

JS λŠ” λͺ…λ Ήν˜•, ν•¨μˆ˜ν˜•, ν”„λ‘œν† κΈ°λ°˜ 객체 μ§€ν–₯ ν”„λ‘œκ·Έλž˜λ°μ„ μ§€μ›ν•˜λŠ” λ©€ν‹° νŒ¨λŸ¬λ‹€μž„ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄!!

JS λŠ” 클래슀 기반 객체지ν–₯ 언어보닀 νš¨μœ¨μ μ΄λ©΄μ„œ κ°•λ ₯ν•œ ν”„λ‘œν† νƒ€μž… 기반의 객체지ν–₯ μ–Έμ–΄!!

 

 

728x90
λ°˜μ‘ν˜•