ìë°ì¤í¬ë¦½í¸(JavaScript)ê° ì¸ì´ë¡ì ì§ë í¹ì§ì ëí´ ììë³´ê² ìµëë¤. ì´ì´ì ìë°ì¤í¬ë¦½í¸ë¡ 무ìì í ì ììì§, ë¤ë¥¸ 기ì ë¤ì´ ìë°ì¤í¬ë¦½í¸ë¥¼ ì´ë»ê² íì©íê³ ìëì§ë ì´ì¼ê¸°í´ ë³´ê² ìµëë¤.
ì ì
ìë°ì¤í¬ë¦½í¸ë âì¹íì´ì§ì ìëê°ì ë¶ì´ë£ê¸° ìí´â ë§ë¤ì´ì§ íë¡ê·¸ëë° ì¸ì´ì ëë¤.
ìë°ì¤í¬ë¦½í¸ë¡ ìì±í íë¡ê·¸ë¨ì ì¤í¬ë¦½í¸(script) ë¼ê³ ë¶ë¦ ëë¤. ì¤í¬ë¦½í¸ë ì¹íì´ì§ì HTML ìì ìì±í ì ìëë°, ì¹íì´ì§ë¥¼ ë¶ë¬ì¬ ë ì¤í¬ë¦½í¸ê° ìëì¼ë¡ ì¤íë©ëë¤.
ì¤í¬ë¦½í¸ë í¹ë³í ì¤ë¹ë ì»´íì¼ ìì´ ë³´íµì 문ì ííë¡ ìì±í ì ìê³ , ì¤íë í ì ììµëë¤.
ì´ë° ê´ì ìì ë³´ë©´ ìë°ì¤í¬ë¦½í¸ë ìë°(Java)ìë ë§¤ì° ë¤ë¥¸ ì¸ì´ë¼ê³ í ì ììµëë¤.
ì²ì ìë°ì¤í¬ë¦½í¸ê° ë§ë¤ì´ì¡ì ëë 'LiveScriptâë¼ë ì´ë¦ì¼ë¡ ë¶ë ¸ìµëë¤. ê·¸ë°ë°, ë¹ì ìë°ì ì¸ê¸°ê° ì주 ëì ìí©ì´ììµëë¤. ê´ë ¨ì¸ë¤ì ìë°ì¤í¬ë¦½í¸ë¥¼ ìë°ì âëìâ ê²©ì¸ ì¸ì´ë¡ íë³´íë©´ ëìì´ ë ê²ì´ë¼ë ìì¬ê²°ì ì ë´ë¦¬ê³ ì´ë¦ì ë°ê¿¨ìµëë¤.
ì´ë¦ì ìë°ìì ì°¨ì©í´ ìì§ë§, ìë°ì¤í¬ë¦½í¸ë ìë°ìë ë ìì ì¸ ì¸ì´ì ëë¤. 꾸ì¤í ë°ì ì ê±°ëíë©´ì ECMAScriptë¼ë ê³ ì í ëª ì¸ë¥¼ ê°ì¶ ë 립ì ì¸ ì¸ì´ê° ëìì£ . ìë°ì¤í¬ë¦½í¸ë ìë°ì ìë¬´ë° ì°ê´ì´ ììµëë¤.
ìë°ì¤í¬ë¦½í¸ë ë¸ë¼ì°ì ë¿ë§ ìëë¼ ìë²ììë ì¤íí ì ììµëë¤. ì´ ì¸ìë ìë°ì¤í¬ë¦½í¸ ìì§(JavaScript engine)ì´ë¼ ë¶ë¦¬ë í¹ë³í íë¡ê·¸ë¨ì´ ë¤ì´ ìë 모ë ëë°ì´ì¤ììë ëìí©ëë¤.
ë¸ë¼ì°ì ì 'ìë°ì¤í¬ë¦½í¸ ê°ì 머ì âì´ë¼ ë¶ë¦¬ë ìì§ì´ ë´ì¥ëì´ ììµëë¤.
ìì§ì ì¢ ë¥ë ë¤ìíë°, ìì§ë§ë¤ í¹ì ì ì½ëë¤ìì´ ììµëë¤. ìëì²ë¼ ë§ì´ì£ .
- V8 â Chromeê³¼ Operaìì ì°ì ëë¤.
- SpiderMonkey â Firefoxìì ì°ì ëë¤.
- IEë ë²ì ì ë°ë¼ 'Tridentâë 'Chakraâë¼ ë¶ë¦¬ë ìì§ì ì¬ì©í©ëë¤. 'ChakraCoreâë Microsoft Edgeì ì¬ì©ëë©°, 'SquirrelFishâë Safariì ì¬ì©ë©ëë¤.
ìì ì½ëë¤ìì ê°ë° ê´ë ¨ ê¸ìì ì¢ ì¢ ì¸ê¸ë기 ë문ì 기ìµí´ ëë ê²ì´ ì¢ìµëë¤. 본 íí 리ì¼ììë í´ë¹ ì½ëë¤ìì ì¬ì©í ìì ì ëë¤. "Xë¼ë 기ë¥ì V8ììë§ ì§ìí©ëë¤."ë¼ë ìì¼ë¡ ë§ì´ì£ . ì´ë° 문ì¥ì ë§ëë©´ Chromeê³¼ Operaììë§ ì´ ê¸°ë¥ì ì§ìíë¤ê³ ì´í´íìë©´ ë©ëë¤.
ìì§ì´ ì´ë»ê² ëìíëì§ ì´í´íë ¤ë©´ ìë¹í ìê°ì ììë¶ì´ì¼ í©ëë¤. íì§ë§ 기본 ì리ë ë¤ìê³¼ ê°ì´ ê°ë¨í©ëë¤.
- ìì§(ë¸ë¼ì°ì ë¼ë©´ ë´ì¥ ìì§)ì´ ì¤í¬ë¦½í¸ë¥¼ ì½ìµëë¤(íì±).
- ì½ì´ ë¤ì¸ ì¤í¬ë¦½í¸ë¥¼ 기ê³ì´ë¡ ì íí©ëë¤(ì»´íì¼).
- 기ê³ì´ë¡ ì íë ì½ëê° ì¤íë©ëë¤. 기ê³ì´ë¡ ì íëì기 ë문ì ì¤í ìëê° ë¹ ë¦ ëë¤.
ìì§ì íë¡ì¸ì¤ ê° ë¨ê³ë§ë¤ ìµì í를 ì§íí©ëë¤. ì¬ì§ì´ ì»´íì¼ì´ ëëê³ ì¤í ì¤ì¸ ì½ë를 ê°ìíë©´ì, ì´ ì½ëë¡ íë¬ê°ë ë°ì´í°ë¥¼ ë¶ìíê³ , ë¶ì 결과를 í ëë¡ ê¸°ê³ì´ë¡ ì íë ì½ë를 ë¤ì ìµì íí기ë í©ëë¤. ì´ë° ê³¼ì ì ê±°ì¹ë©´ ì¤í¬ë¦½í¸ ì¤í ìëë ëì± ë 빨ë¼ì§ëë¤.
ë¸ë¼ì°ì ìì í ì ìë ì¼
모ë ìë°ì¤í¬ë¦½í¸ë âìì íâ íë¡ê·¸ëë° ì¸ì´ì ëë¤. ë©ëª¨ë¦¬ë CPU ê°ì ì ìì¤ ììì ì¡°ìì íì©íì§ ììµëë¤. ì ì´ì ì´ë¬í ì ê·¼ì´ íìì¹ ìì ë¸ë¼ì°ì 를 ëìì¼ë¡ ë§ë ì¸ì´ì´ê¸° ë문ì´ì£ .
ìë°ì¤í¬ë¦½í¸ì ë¥ë ¥ì ì¤í íê²½ì ìë¹í ìí¥ì ë°ìµëë¤. Node.js íê²½ìì ììì íì¼ì ì½ê±°ë ì°ê³ , ë¤í¸ìí¬ ìì²ì ìííë í¨ì를 ì§ìí©ëë¤.
ë¸ë¼ì°ì íê²½ìì ì¹íì´ì§ ì¡°ì, í´ë¼ì´ì¸í¸ì ìë²ì ìí¸ìì©ì ê´í 모ë ì¼ì í ì ììµëë¤.
ë¸ë¼ì°ì ìì ìë°ì¤í¬ë¦½í¸ë¡ í ì ìë ì¼ì ë¤ìê³¼ ê°ìµëë¤.
- íì´ì§ì ìë¡ì´ HTMLì ì¶ê°íê±°ë 기존 HTML, í¹ì ì¤íì¼ ìì í기
- ë§ì°ì¤ í´ë¦ì´ë í¬ì¸í°ì ìì§ì, í¤ë³´ë í¤ ë림 ë±ê³¼ ê°ì ì¬ì©ì íëì ë°ìí기
- ë¤í¸ìí¬ë¥¼ íµí´ ì격 ìë²ì ìì²ì ë³´ë´ê±°ë, íì¼ ë¤ì´ë¡ë, ì ë¡ëí기(AJAXë COMETê³¼ ê°ì 기ì ì¬ì©)
- ì¿ í¤ë¥¼ ê°ì ¸ì¤ê±°ë ì¤ì í기. ì¬ì©ììê² ì§ë¬¸ì ê±´ë¤ê±°ë ë©ìì§ ë³´ì¬ì£¼ê¸°
- í´ë¼ì´ì¸í¸ 측ì ë°ì´í° ì ì¥í기(ë¡ì»¬ ì¤í 리ì§)
ë¸ë¼ì°ì ìì í ì ìë ì¼
ë¸ë¼ì°ì ë ë³´ìì ìí´ ìë°ì¤í¬ë¦½í¸ì 기ë¥ì ì ì½ì 걸ì´ëììµëë¤. ì´ë° ì ì½ì ì ì± ì¹íì´ì§ê° ê°ì¸ ì ë³´ì ì ê·¼íê±°ë ì¬ì©ìì ë°ì´í°ë¥¼ ììíë ê²ì ë§ê¸° ìí´ ë§ë¤ì´ì¡ìµëë¤.
ëª ê°ì§ ì ì½ì¬íì ìê°í´ ëë¦¬ê² ìµëë¤.
-
ì¹íì´ì§ ë´ ì¤í¬ë¦½í¸ë ëì¤í¬ì ì ì¥ë ììì íì¼ì ì½ê±°ë ì°ê³ , ë³µì¬íê±°ë ì¤íí ë ì ì½ì ë°ì ì ììµëë¤. ì´ìì²´ì ê° ì§ìíë 기ë¥ì ë¸ë¼ì°ì ê° ì§ì ì°ì§ 못íê² ë§íì기 ë문ì ëë¤.
모ë ë¸ë¼ì°ì 를 ì¬ì©íë©´ íì¼ì ë¤ë£° ì ììµëë¤. íì§ë§ ì ê·¼ì ì íëì´ ììµëë¤. ì¬ì©ìê° ë¸ë¼ì°ì ì°½ì íì¼ì âëì´ë¤ ëê±°ëâ
<input>í그를 íµí´ íì¼ì ì íí ëì ê°ì´ í¹ì ìí©ììë§ íì¼ ì ê·¼ì íì©í©ëë¤.ì¹´ë©ë¼ë ë§ì´í¬ ê°ì ëë°ì´ì¤ì ìí¸ ìì©íë ¤ë©´ ì¬ì©ìì ëª ìì ì¸ íê°ê° ìì´ì¼ í©ëë¤. ìë°ì¤í¬ë¦½í¸ê° íì±íë íì´ì§ë¼ë ì¬ì©ì 몰ë ì¹ ì¹´ë©ë¼ë¥¼ ìë ìì¼ ìì§í ì 보를 êµê°ìë³´êµ(NSA)ê³¼ ê°ì ê³³ì 몰ë ì ì¡í ì ììµëë¤.
-
ë¸ë¼ì°ì ë´ íê³¼ ì°½ì ëê° ìë¡ì ì 보를 ì ì ììµëë¤. ê·¸ë°ë° ìë°ì¤í¬ë¦½í¸ë¥¼ ì¬ì©í´ í ì°½ìì ë¤ë¥¸ ì°½ì ì´ ëë ìì¸ê° ì ì©ë©ëë¤. íì§ë§ ì´ ê²½ì°ìë ëë©ì¸ì´ë íë¡í ì½, í¬í¸ê° ë¤ë¥´ë¤ë©´ íì´ì§ì ì ê·¼í ì ììµëë¤.
ì´ë° ì ì½ì¬íì 'ëì¼ ì¶ì² ì ì± (Same Origin Policy)'ì´ë¼ ë¶ë¦ ëë¤. ì´ ì ì± ì í¼íë ¤ë©´ ë íì´ì§ë ë°ì´í° êµíì ëìí´ì¼ íê³ , ëìì ê´ë ¨ë í¹ìí ìë°ì¤í¬ë¦½í¸ ì½ë를 í¬í¨íê³ ìì´ì¼ í©ëë¤. ìì¸í ì¬íì ì¶í íìµíëë¡ íê² ìµëë¤.
ë¤ì íë² ê°ì¡°íì§ë§, ì´ë° ì ì½ì¬íì ì¬ì©ìì ë³´ìì ìí´ ë§ë¤ì´ì¡ìµëë¤.
http://anysite.comìì ë°ìì¨ íì´ì§ê°http://gmail.comìì ë°ìì¨ íì´ì§ ìì ì ë³´ì ì ê·¼í´ ì¤ìí ê°ì¸ì 보를 íì¹ë 걸 ë§ê¸° ìí¨ì ëë¤. -
ìë°ì¤í¬ë¦½í¸ë¥¼ ì´ì©íë©´ íì´ì§ë¥¼ ìì±í ìë²ì ì½ê² ì 보를 ì£¼ê³ ë°ì ì ììµëë¤. íì§ë§ í ì¬ì´í¸ë ëë©ì¸ìì ë°ì´í°ë¥¼ ë°ìì¤ë ê±´ ë¶ê°ë¥í©ëë¤. ê°ë¥íë¤ í ì§ë¼ë ì격 ìë²ìì ëª íí ì¹ì¸ì í´ì¤ì¼ í©ëë¤(HTTP í¤ë ë±ì ì´ì©). ì´ ìì ë³´ìì ìí´ ë§ë¤ì´ì§ ì ì½ì¬íì ëë¤.
ë¸ë¼ì°ì íê²½ ë°, ì를 ë¤ì´ ìë²ë¼ë©´ ì´ë¬í ì ì½ì ì¡´ì¬íì§ ìì ê²ì ëë¤. ë¤ë§, 모ë ë¸ë¼ì°ì ìì ì¶ê° ê¶í íê°ë¥¼ ìì²íë íë¬ê·¸ì¸ì´ë ìµì¤í ì ì¤ì¹ê° íì©ë©ëë¤.
ìë°ì¤í¬ë¦½í¸ë§ì ê°ì
ìë°ì¤í¬ë¦½í¸ì ë¤ìí ì¥ì ì´ ìì§ë§ ì¬ê¸°ì ì¸ ê°ì§ë§ ì¸ê¸í´ ë³´ëë¡ íê² ìµëë¤.
- HTML/CSSì ìì í íµí©í ì ìì
- ê°ë¨í ì¼ì ê°ë¨íê² ì²ë¦¬í ì ìê² í´ì¤
- 모ë 주ì ë¸ë¼ì°ì ìì ì§ìíê³ , 기본 ì¸ì´ë¡ ì¬ì©ë¨
ì´ ì¸ ê°ì§ 모ë를 ì§ìíë ë¸ë¼ì°ì ì°ê´ 기ì ì ìë°ì¤í¬ë¦½í¸ë¿ì ëë¤.
ì´ë° í¹ì§ ë문ì ìë°ì¤í¬ë¦½í¸ë ë¸ë¼ì°ì ì¸í°íì´ì¤ë¥¼ ë§ë¤ ë ê°ì¥ ë리 ì¬ì©ëê³ ììµëë¤.
ì´ ì¸ìë ìë°ì¤í¬ë¦½í¸ë¥¼ ì´ì©í´ ìë²ë 모ë°ì¼ ì± ë±ì ë§ëë ê²ë ê°ë¥í©ëë¤.
ìë°ì¤í¬ë¦½í¸ âë머ìâ ì¸ì´ë¤
ìë°ì¤í¬ë¦½í¸ 문ë²ì 모ë ì¬ëì ì구를 충족ìí¤ì§ 못í©ëë¤. ì¬ëë§ë¤ ê°ê¸° ë¤ë¥¸ 기ë¥ì ìí기 ë문ì´ì£ .
íë¡ì í¸ë§ë¤ ì구ì¬íì´ ì²ì°¨ë§ë³ì´ê¸° ë문ì ì´ë ë¹ì°í íìì ëë¤.
ì´ë¡ ì¸í´ ê·¼ëì ë¸ë¼ì°ì ìì ì¤í ë기 ì ì ìë°ì¤í¬ë¦½í¸ë¡ í¸ëì¤íì¼(transpile, ë³í) í ì ìë ìë¡ì´ ì¸ì´ë¤ì´ ë§ì´ ë±ì¥íìµëë¤.
ìµì í´ì ì¬ì©íë©´ í¸ëì¤íì¼ì ë¹ ë¥´ê³ ëª ííê² ìíí ì ììµëë¤. ìµì ë구ë ìë°ì¤í¬ë¦½í¸ ì´ì¸ì ì¸ì´ë¡ ìì±í ì½ë를 âë³´ì´ì§ ìë ê³³ììâ ìë°ì¤í¬ë¦½í¸ë¡ ìë ë³íí´ì¤ëë¤.
ìë°ì¤í¬ë¦½í¸ë¡ í¸ëì¤íì¼ì´ ê°ë¥í ì¸ì´ ëª ê°ì§ë¥¼ ìê°í´ ëë¦¬ê² ìµëë¤.
- CoffeeScriptë ìë°ì¤í¬ë¦½í¸ë¥¼ ìí 'syntactic sugarâì ëë¤. ì§§ì 문ë²ì ëì íì¬ ëª ë£íê³ ì´í´í기 ì¬ì´ ì½ë를 ìì±í ì ììµëë¤. Ruby ê°ë°ìë¤ì´ ì¢ìí©ëë¤.
- TypeScriptë ê°ë°ì ë¨ìí íê³ ë³µì¡í ìì¤í ì ì§ìíë ¤ë 목ì ì¼ë¡ 'ìë£íì ëª ìí(strict data typing)'ì ì§ì¤í´ ë§ë ì¸ì´ì ëë¤. Microsoftê° ê°ë°íììµëë¤.
- Flow ìì ìë£íì ê°ì íëë°, TypeScriptìë ë¤ë¥¸ ë°©ìì ì¬ì©í©ëë¤. Facebookì´ ê°ë°íììµëë¤.
- Dartë 모ë°ì¼ ì±ê³¼ ê°ì´ ë¸ë¼ì°ì ê° ìë íê²½ìì ëìíë ê³ ì ì ìì§ì ê°ì§ ë ìì ì¸ì´ì ëë¤. Googleì´ ê°ë°íììµëë¤.
ì´ ì¸ìë ìë°ì¤í¬ë¦½í¸ë¡ í¸ëì¤íì¼ í ì ìë ì¸ì´ë ë¤ìí©ëë¤. ê°ë° ì¸ì´ë¡ ì´ë° ì¸ì´ ì¤ íë를 ííë¤ê³ íëë¼ë ìì ì´ ë¬´ìì íê³ ìëì§ ì´í´íë ¤ë©´ ê²°êµì ìë°ì¤í¬ë¦½í¸ë¥¼ ììì¼ í©ëë¤.
ìì½
- ìë°ì¤í¬ë¦½í¸ë ë¸ë¼ì°ì ììë§ ì¸ ëª©ì ì¼ë¡ ê³ ìë ì¸ì´ì´ì§ë§, ì§ê¸ì ë¤ìí íê²½ìì ì°ì´ê³ ììµëë¤.
- ì¤ëë ìë°ì¤í¬ë¦½í¸ë ë¸ë¼ì°ì íê²½ìì ê°ì¥ ë리 ì¬ì©ëë ì¸ì´ë¡ ì리매ê¹íììµëë¤. HTML/CSSì ìì í íµí©ì´ ê°ë¥í©ëë¤.
- ìë°ì¤í¬ë¦½í¸ë¡ 'í¸ëì¤íì¼âí ì ìë ì¸ì´ë ë§ìµëë¤. ê° ì¸ì´ë§ë¤ ê³ ì í 기ë¥ì ì ê³µíì£ . ìë°ì¤í¬ë¦½í¸ì ìë¬í ë¤ì ì´ ì¸ì´ë¤ì ì´í´ë³¼ ê²ì ì¶ì²ë립ëë¤.
ëê¸
<code>í그를, ì¬ë¬ ì¤ë¡ 구ì±ë ì½ë를 ì½ì íê³ ì¶ë¤ë©´<pre>í그를 ì´ì©íì¸ì. 10ì¤ ì´ìì ì½ëë plnkr, JSBin, codepen ë±ì ìëë°ì¤ë¥¼ ì¬ì©íì¸ì.