Programming/JavaScript

[JavaScript] ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญ์‚ฌ์™€ ํ˜„์žฌ ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜ (JavaScript, ECMAScript, JQuery, Babel, Node.js)

yuri lee 2022. 9. 4. 21:43
๋ฐ˜์‘ํ˜•
์ด ๊ธ€์€ ๋“œ๋ฆผ์ฝ”๋”ฉ๋‹˜์˜ '์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์—ญ์‚ฌ์™€ ํ˜„์žฌ ๊ทธ๋ฆฌ๊ณ  ๋ฏธ๋ž˜ (JavaScript, ECMAScript, JQuery, Babel, Node.js)' ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค. 

History

1993๋…„

  • UI ์š”์†Œ๊ฐ€ ๊ฐ€๋ฏธ๋œ ์ฒซ๋ฒˆ์งธ ์›น ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํƒ„์ƒํ•˜๊ฒŒ ๋จ Mosaic Web Browser

1994 Netscape Navigator ํƒ„์ƒ

  • Mosaic Web Browser ๋ฅผ ์ด๋Œ๋˜ Mac Andressen์€ Netscape์„ ์„ค๋ฆฝํ•จ
  • Netscape Navigator - Wikipedia
  • ์ดˆ๊ธฐ ์ธํ„ฐ๋„ท ์‚ฌ์šฉ์ž๋“ค์˜ ํญ๋ฐœ์  ๋ฐ˜์‘์„ ์–ป์–ด ์•ฝ 90%์˜ ์‹œ์žฅ์ ์œ ์œจ์„ ์ฐจ์ง€ํ–ˆ๋‹ค. ์ •์  ์‚ฌ์ดํŠธ
  • ์–ด๋–ป๊ฒŒ ํ•˜๋ฉด ๋™์ ์ธ ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ๊ณ ์‹ฌ → scripting ์–ธ์–ด๋ฅผ ์ถ”๊ฐ€ํ•ด๋ณด์ž!
    1. Java → ๋„ˆ๋ฌด ๋ฌด๊ฑฐ์›Œ!
    2. Scheme from Brendan Eich

1994, 9 Mocha

  • Scheme์˜ ์ปจ์…‰์„ ์œ ์ง€ํ•˜๋ฉด์„œ ๋ฌธ๋ฒ•์€ Java์Šค๋Ÿฝ๊ฒŒ ๊ฐœ๋ฐœํ•จ (Brendan Eich)
  • super flexible for anything!
  • liveScript ๋กœ ์ด๋ฆ„์ด ๋ฐ”๋€œ. (liveScript interpreter์ด ํฌํ•จ๋˜์–ด ์žˆ์Œ) ๊ทธ ๋ง์€ ์›น๊ฐœ๋ฐœ์ž๋“ค์ด liveScript ์–ธ์–ด๋ฅผ ํ†ตํ•ด์„œ ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ดํ•ดํ•˜๋ฉด์„œ ๋” ์š”์†Œ๋ฅผ ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค..
  • ๋‹น์‹œ Java์˜ ์ธ๊ธฐ๊ฐ€ ๋งŽ์•˜๋Š”๋ฐ, ๊ทธ๋ž˜์„œ JavaScript๋กœ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜๊ฒŒ ๋จ

1995 Netscape Netscape Navigator

  • ๊ณต์‹์ ์ธ JavaScript ํƒ„์ƒ
  • Interpreter

1995 MS, Internet Explorer

  • Netscape์˜ ์„ฑ๊ณต์‚ฌ๋ก€๋ฅผ ๋ชฉ๊ฒฉํ•˜๊ณ  MS ์—์„œ ์œ„๊ธฐ๊ฐ์„ ๋Š๋ผ๊ณ , Netscape browser๋ฅผ Reverse engineering ํ•˜๊ฒŒ ๋จ. ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ๋ถ„์„ํ•ด์„œ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ๋ถ„์„ํ•˜์—ฌ ๋ณต์›ํ•จ. JScript๋กœ ์ด๋ฆ„์„ ๋ณ€๊ฒฝํ•˜์—ฌ ์„ธ์ƒ์— ๋‚ด๋†“์Œ
  • ๋‘ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ๋‹ฌ๋ผ ๊ฐœ๋ฐœ์ž์˜ ๊ณ ํ†ต์ด ์‹œ์ž‘๋จ ๐Ÿ˜ญ

1996, 11 Netscape

  • ๋‘ ๋ธŒ๋ผ์šฐ์ €์˜ ์–‘๊ทนํ™”๋ฅผ ๊ทน๋ณตํ•˜๊ณ ์ž Netscape์—์„œ๋Š” ECMA International ๋‹จ์ฒด์— ์ฐพ์•„๊ฐ€์„œ ํ‘œ์ค€ํ™”๋œ JavaScript๋ฅผ ๋งŒ๋“ค ๊ฒƒ์„ ์ œ์•ˆ

1997, 7 ECMAScript 1 Language specification

  • ECMAScript๋Š” ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ์–ธ์–ด๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ทธ ์–ธ์–ด๋ฅผ ์ดํ•ดํ•˜๋Š” ์—”์ง„์ด ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ฌธ๋ฒ•์ ์ธ ์‚ฌํ•ญ์„ ์ž˜ ์ •๋ฆฌํ•ด๋†“์€ ๋ฌธ์„œ
  • ๊ทธ ๋’ค์— ์ƒˆ๋กœ์šด ๋ฒ„์ „๋“ค์ด ~ 2000 ๊ณ„์† ์—…๋ฐ์ดํŠธ ๋จ
    • error handling
    • optional type annotation
    • class
    • Enterprise scale

2000, Microsoft's Internet Explorer

  • MS์˜ IE ์‹œ์žฅ ์ ์œ ์œจ์ด ๊ธ‰๊ฒฉํžˆ ์ƒ์Šนํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค. (๋ฌด๋ฃŒ 95% !!)
  • ๋” ์ด์ƒ ECMAScript ํ‘œ์ค€ํ™”์— ์ฐธ๊ฐ€ํ•˜์ง€ ์•Š๋Š”๋‹ค๊ณ  ์„ ์–ธํ•จ. 

2004, moz://a Firefox

  • ๋ชจ์งˆ๋ผ์‚ฌ์—์„œ firefox๋ฅผ ์ถœ์‹œํ•จ. ActionScript ์™€ Tamarin์„ ํ†ตํ•ด ECMAScript4 ํ‘œ์ค€ํ™”๋ฅผ ์ œ์•ˆํ–ˆ์ง€๋งŒ, ๊ธฐ์กด JavaScript์™€๋Š” ๋„ˆ๋ฌด ๋‹ฌ๋ž๊ธฐ ๋•Œ๋ฌธ์— ๋ฌด์‚ฐ๋˜์—ˆ๋‹ค.
  • Firefox, Internet Explorer, Netscape Navigator 3์‚ฌ์˜ ์‹ ๊ฒฝ์ „์ด ๋ฒŒ์–ด์ง€๊ณ  ์žˆ๋Š” ์‚ฌ์ด ๋ถˆ์Œํ•œ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ชจ๋‘ ๋™์ž‘๋˜๋Š” ์›นํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค์–ด์•ผ ํ–ˆ๋‹ค. ๐Ÿฅฒ

2004, Jesse James Carrett's AJAX

  • AJAX(Asychronous JavaSript and XML)  ๋น„๋™๊ธฐ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋ฒ„์—์„œ ๋ฐ›์•„์˜ค๊ณ  ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ์ •๋ง ํš๊ธฐ์ ์ธ ๊ธฐ์ˆ ์ด ๋„์ž…๋˜์—ˆ๋‹ค. 
  • ์—ฌ์ „ํžˆ ์‹ ๊ฒฝ์ „์€ -ing
  • ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ชจ์ธ ์ปค๋ฎค๋‹ˆํ‹ฐ๊ฐ€ ์ƒ์„ฑ๋˜๋ฉด์„œ ์—ฌ๊ธฐ์„œ jQuery, dojo, mootools ์™€ ๊ฐ™์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ๋งŽ์ด ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋“ค์ด ํ•ด๊ฒฐํ•˜๊ณ ์ž ํ•˜๋Š” ๊ณตํ†ต๋œ ๊ฒƒ์€ ๋”ฑ ํ•˜๋‚˜. ์ œ๊ณตํ•˜๋Š” API, ํ•จ์ˆ˜๋“ค์„ ์‚ฌ์šฉ์„ ํ†ตํ•ด ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‹ ๊ฒฝ์“ธ ํ•„์š”๊ฐ€ ์—†๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ!

2008, Google Chrome !

  • just-in-time compilation ์ด๋ผ๋Š” ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ์—”์ง„์ด ํฌํ•จ๋œ ํฌ๋กฌ ์—”์ง„์ด ํƒ„์ƒํ–ˆ๋‹ค. 
  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅธ ์—”์ง„! 
  • ๋‹ค๋ฅธ 3์‚ฌ๋“ค์—๊ฒŒ ํฐ ์ž๊ทน

2008, 7 

  • ์„œ๋กœ ์œˆ์œˆํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์„ ๋ชจ์ƒ‰ 

2009 ECMAScript 5

  • 2009๋…„ ๋“œ๋””์–ด ECMAScript 5๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค. 

2015 ECMAScript 6

  • 2015๋…„์—๋Š” ECMAScript 6๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋˜์—ˆ๋‹ค. 
    • default paramerter
    • class
    • arrow function
    • const 
    • let
  • ๊ทธ ์ดํ›„ ๋งค๋…„ ์ƒˆ๋กœ์šด ๋ฒ„์ „๋“ค์ด ๋‚˜์˜ค๊ธด ํ•˜์ง€๋งŒ, ์ปค๋‹ค๋ž€ ๋ณ€ํ™”๋“ค์€ 5&6์—์„œ ์ •์˜๋˜์—ˆ๋‹ค. 
  • JavaScript ๋Š” ์ด์ œ ์„ฑ์ˆ™ํ•˜๊ณ  ์ •์ฐฉ๋œ ์–ธ์–ด๋ผ๊ณ  ๋งํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด์ œ๋Š” ๋” ์ด์ƒ jQuery, dojo ๋“ฑ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์—†์ด๋„ ์ž˜ ๋™์ž‘๋˜๋Š” ์›น ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. 

Javascript Engines

  • ๊ฐ๊ฐ์˜ ๋ธŒ๋ผ์šฐ์ €๋งˆ์ž ECMAScript๋ฅผ ๋”ฐ๋ผ๊ฐ€๋Š” ๋‹ค์–‘ํ•œ ์—”์ง„๋“ค์ด ์กด์žฌํ•œ๋‹ค. 
  • V8(Chrome)
    • node.js, electron์—์„œ๋„ ๋งŽ์ด ์ด์šฉ๋จ.
  • SipderMonkey(Firefox)
  • JSCore(Safari)
  • Chakra(MS Edge) 

Babel

  • ์‹œ์žฅ์—์„œ ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ์ž๋“ค์€ ๋‹ค์–‘ํ•œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ๊ณ , ๋ชจ๋“  ์‚ฌ์šฉ์ž๋“ค์ด ์ตœ์‹  ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฑด ์•„๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๊ฐœ๋ฐœํ•  ๋•Œ๋Š” ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ๋ฐฐํฌํ•  ๋•Œ๋งŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ transcompiler๋ฅผ ์ด์šฉํ•˜์—ฌ 5 or 6์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ณ€ํ™˜๋œ ์ฝ”๋“œ๋ฅผ ์ƒ์‚ฐํ•˜๋Š” ๊ฒƒ์„ ๋ฐ”๋ฒจ์ด๋ผ๊ณ  ํ•œ๋‹ค. 

SPA(Single Page Application)

ํ•˜๋‚˜์— ํŽ˜์ด์ง€ ์•ˆ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ›์•„์™€์„œ ๋ถ€๋ถ„์ ์œผ๋กœ ์—…๋ฐ์ดํŠธ ํ•˜๋Š” ๊ฒƒ์ด ์œ ํ–‰ํ•˜๊ณ  ์žˆ๋‹ค. SPA๋ฅผ ๋” ํŽธํ•˜๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ React, Vue, Angular ๋“ค์ด ๋‚˜์˜ค๊ฒŒ ๋œ ๊ฒƒ์ด๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋‚˜ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ํ†ตํ•ด SPA๋ฅผ ๋” ์‰ฝ๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค. 

Javascript

  • ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ธŒ๋ผ์šฐ์ €๋ฅผ ์œ„ํ•œ, ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ ์ธ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์–ธ์–ด์ด๋‹ค.
  • node.js๊ฐ€ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜๊ณ , ์ด๋Š” v8๋ฅผ ์ด๋™ํ•œ ๋ฐฑ์—”๋“œ์—์„œ ์„œ๋น„์Šค๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“ค์–ด์กŒ๋‹ค. 
  • ๊ทธ ๋ฟ๋งŒ์•„๋‹ˆ๋ผ mobile, desktop ๋ฅผ ๋งŒ๋“ค ๋•Œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค. 
  • ๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ์œ ์ผํ•œ ์–ธ์–ด๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜€์ง€๋งŒ, ์š”์ฆ˜์—๋Š” WA (web assemble) ๋ฅผ ํ†ตํ•ด ๋‹ค์–‘ํ•œ ์–ธ์–ด๋“ค์„ ์ด์šฉํ•ด์„œ ์›น์•ฑ์„ ๋งŒ๋“œ๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ด์กŒ๋‹ค. 

https://www.youtube.com/watch?v=wcsVjmHrUQg&list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2

๋ฐ˜์‘ํ˜•