JavaScript È°¿ëÆÁ
2022.05.17 / 21:04

°³¹ßÀÚ°¡ »ç¶ûÇÏ´Â ÇÁ·ÐÆ®¿£µå ÇÁ·¹ÀÓ¿öÅ© (2) ½ºº§Æ®(Svelte) »ç¿ë¹ý

ÄÚÄÚ·Î
Ãßõ ¼ö 156

½ºº§Æ® °ø½Ä »çÀÌÆ®¿¡¼­´Â REPL(Read-Eval-Print Loop)À» Á¦°øÇÕ´Ï´Ù¶ÇÇÑ degitÀ» »ç¿ëÇÏ¿© ·Ñ¾÷(Rollup) ±â¹ÝÀÇ ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.

½ºº§Æ®¿¡¼­ ¾ÖÇø®ÄÉÀ̼ÇÀº Çϳª ÀÌ»óÀÇ ÄÄÆ÷³ÍÆ®·Î ±¸¼ºµË´Ï´Ù. HTMLÀÇ ¼öÆÛ¼ÂÀ» »ç¿ëÇÏ¿© .svelte ÆÄÀÏ¿¡ ÀÛ¼ºµË´Ï´Ù½ºÅ©¸³Æ®¡¤½ºÅ¸ÀÏ¡¤¸¶Å©¾÷ÀÇ ¼¼ ¼½¼ÇÀ¸·Î ³ª´µ¸ç °¢ ¼½¼ÇÀº ¸ðµÎ ¼±Åà »çÇ×ÀÔ´Ï´Ù.

¸¶Å©¾÷ÀÇ Áß°ýÈ£ ¾È¿¡ ¿øÇÏ´Â ÀÚ¹Ù½ºÅ©¸³Æ®¸¦ ³ÖÀ» ¼ö ÀÖ½À´Ï´Ù.

¶ÇÇÑ Áß°ýÈ£¸¦ »ç¿ëÇÏ¿© ¿ä¼Ò ¼Ó¼ºÀ» Á¦¾îÇÒ ¼ö ÀÖ½À´Ï´Ù.

<style> Å±׸¦ »ç¿ëÇÏ¿© ½ºÅ¸ÀÏÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù½ºÅ¸ÀÏÀº ÇØ´ç ÄÄÆ÷³ÍÆ®¿¡¸¸ Àû¿ëµË´Ï´Ù¾ÛÀÇ ´Ù¸¥ °÷¿¡¼­ ¿ä¼ÒÀÇ ½ºÅ¸ÀÏÀ» º¯°æÇÏÁö ¾Ê½À´Ï´Ù.

¿ä¼Ò¸¦ Æ÷ÇÔÇÏ´Â °Íó·³ ´Ù¸¥ ÆÄÀÏ¿¡¼­ ÄÄÆ÷³ÍÆ®¸¦ °¡Á®¿Í Æ÷ÇÔÇÒ ¼ö ÀÖ½À´Ï´Ù¶ÇÇÑ ÄÄÆ÷³ÍÆ® À̸§Àº ´ë¹®ÀڷΠǥ½ÃÇÕ´Ï´ÙÀÌ´Â »ç¿ëÀÚ Á¤ÀÇ ÄÄÆ÷³ÍÆ®¿Í HTML Å±׸¦ ±¸ºÐÇÒ ¼ö ÀÖµµ·Ï Çϱâ À§Çؼ­ÀÔ´Ï´Ù.
 
App.svelte

Nested.svelte

ÀϹÝÀûÀÎ ¹®ÀÚ¿­Àº ÀÏ¹Ý ÅؽºÆ®·Î »ðÀÔÇÕ´Ï´Ù¶§·Î´Â HTMLÀ» Á÷Á¢ ·»´õ¸µÇØ¾ß ÇÏ´Â °æ¿ìµµ ÀÖ½À´Ï´ÙÀÌ ¶§´Â Ưº°ÇÑ {@html ¡¦} Å±׸¦ »ç¿ëÇÕ´Ï´Ù.

½ºº§Æ®ÀÇ Á߽ɿ¡´Â À̺¥Æ®¿¡ ´ëÇÑ ÀÀ´ä°ú °°ÀÌ µ¼À» ¾ÖÇø®ÄÉÀÌ¼Ç »óÅÂ¿Í µ¿±âÈ­Çϱâ À§ÇÑ °­·ÂÇÑ ¹ÝÀÀ¼º ½Ã½ºÅÛÀÌ ÀÖ½À´Ï´Ù½ºº§Æ®´Â º¯¼ö °ª ÇÒ´çÀ» °èÃøÇÏ¿© µ¼À» ¾÷µ¥ÀÌÆ®ÇØ¾ß ÇÑ´Ù°í ¾Ë·ÁÁÝ´Ï´Ù.

½ºº§Æ®´Â ÄÄÆ÷³ÍÆ®ÀÇ »óÅ°¡ º¯°æµÉ ¶§ µ¼À» ÀÚµ¿À¸·Î ¾÷µ¥ÀÌÆ®ÇÕ´Ï´ÙÁ¾Á¾ ÄÄÆ÷³ÍÆ®ÀÇ »óÅ ÀϺδ ´Ù¸¥ ºÎºÐ¿¡¼­ °è»ê ¹× º¯°æµÉ ¶§¸¶´Ù ´Ù½Ã °è»êµÇ¾î¾ß ÇÕ´Ï´ÙÀ̸¦ À§ÇÑ ¹ÝÀÀ¼º ¼±¾ð $:ÀÌ ÀÖ½À´Ï´Ù¹ÝÀÀ¼º °ªÀº ¿©·¯ ¹ø ÂüÁ¶ÇØ¾ß Çϰųª ´Ù¸¥ ¹ÝÀÀ¼º °ª¿¡ ÀÇÁ¸ÇÏ´Â °ªÀÌ ÀÖ´Â °æ¿ì¿¡ À¯¿ëÇÕ´Ï´Ù.

½ºº§Æ®ÀÇ ¹ÝÀÀ¼ºÀº ÇÒ´ç¿¡ ÀÇÇØ Æ®¸®°ÅµÇ±â ¶§¹®¿¡ push ¹× splice¿Í °°Àº ¹è¿­ ¸Þ¼­µå¸¦ »ç¿ëÇϸé ÀÚµ¿À¸·Î ¾÷µ¥ÀÌÆ®°¡ ¹ß»ýÇÏÁö ¾Ê½À´Ï´ÙÀ̸¦ ¼öÁ¤ÇÏ´Â ÇÑ °¡Áö ¹æ¹ýÀº ¾Æ·¡ ¿¹½Ã¿Í °°ÀÌ Áߺ¹µÇ´Â ÇÒ´çÀ» Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù.

Áö±Ý±îÁöÀÇ ¼³¸í¿¡¼­ °ªÀº ÁÖ¾îÁø ÄÄÆ÷³ÍÆ® ³»¿¡¼­¸¸ Á¢±Ù °¡´ÉÇß½À´Ï´Ù½ÇÁ¦ ¾ÖÇø®ÄÉÀ̼ǿ¡¼­´Â ÇÑ ÄÄÆ÷³ÍÆ®¿¡¼­ ÇÏÀ§ ÄÄÆ÷³ÍÆ®·Î µ¥ÀÌÅ͸¦ Àü´ÞÇØ¾ß ÇÕ´Ï´Ù±×·¸°Ô ÇÏ·Á¸é ÀϹÝÀûÀ¸·Î props·Î Ãà¾àµÇ´Â ¼Ó¼ºÀ» ¼±¾ðÇØ¾ß ÇÕ´Ï´Ù½ºº§Æ®´Â ´ÙÀ½°ú °°ÀÌ export Å°¿öµå·Î À̸¦ ¼öÇàÇÕ´Ï´Ù.
 
App.svelte

Nested.svelte

HTML¿¡´Â Á¶°Ç¹® ¹× ·çÇÁ¿Í °°Àº ³í¸®¸¦ Ç¥ÇöÇÏ´Â ¹æ¹ýÀÌ ¾ø½À´Ï´Ù¸¶Å©¾÷À» Á¶°ÇºÎ·Î ·»´õ¸µÇϱâ À§ÇØ if ºí·ÏÀ¸·Î °¨½Ô´Ï´Ù.

»óÈ£ ¹èŸÀûÀÎ µÎ Á¶°ÇÀÌ ÀÖÀ» °æ¿ì else ºí·ÏÀ» »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿©·¯ Á¶°ÇÀÏ °æ¿ì else if¿Í ÇÔ²² ¿¬°áÇÒ ¼ö ÀÖ½À´Ï´Ù.

µ¥ÀÌÅÍ ¸ñ·ÏÀ» ¹Ýº¹ÇØ¾ß ÇÏ´Â °æ¿ì each ºí·ÏÀ» »ç¿ëÇմϴٵΠ¹ø° Àμö·Î ÇöÀç À妽º¸¦ °¡Á®¿Ã ¼ö ÀÖ½À´Ï´Ù.

´ëºÎºÐÀÇ ¾ÖÇø®ÄÉÀ̼ÇÀº ºñµ¿±â µ¥ÀÌÅ͸¦ ó¸®ÇØ¾ß ÇÕ´Ï´Ù. await ºí·ÏÀ» »ç¿ëÇÏ¸é ¸¶Å©¾÷¿¡¼­ Á÷Á¢ °ªÀ» ±â´Ù¸± ¼ö ÀÖ½À´Ï´Ù.

on: Áö½Ã¾î¸¦ »ç¿ëÇÏ¿© ¿ä¼ÒÀÇ ¸ðµç À̺¥Æ®¸¦ ¼ö½ÅÇÒ ¼ö ÀÖ½À´Ï´Ù.

¶ÇÇÑ À̺¥Æ® Çڵ鷯¸¦ ÀζóÀÎÀ¸·Î ¼±¾ðÇÒ ¼öµµ ÀÖ½À´Ï´Ù.

µ¼ À̺¥Æ® Çڵ鷯´Â µ¿ÀÛÀ» º¯°æÇÏ´Â ¼öÁ¤ÀÚ¸¦ °¡Áú ¼ö ÀÖ½À´Ï´Ù¿¹¸¦ µé¾î, once ¼öÁ¤ÀÚ°¡ ÀÖ´Â Çڵ鷯´Â ÇÑ ¹ø¸¸ ½ÇÇàµË´Ï´Ù.

ÄÄÆ÷³ÍÆ®´Â À̺¥Æ®¸¦ Àü´ÞÇÒ ¼öµµ ÀÖ½À´Ï´Ù±×·¸°Ô ÇÏ·Á¸é À̺¥Æ® µð½ºÆÐó(dispatcher)¸¦ ¸¸µé¾î¾ß ÇÕ´Ï´Ù.
 
App.svelte

Inner.svelte

µ¼ À̺¥Æ®¿Í ´Þ¸® ÄÄÆ÷³ÍÆ® À̺¥Æ®´Â ¹öºí¸µµÇÁö ¾Ê½À´Ï´Ù±í°Ô ÁßøµÈ ÄÄÆ÷³ÍÆ®¿¡¼­ À̺¥Æ®¸¦ ¼ö½ÅÇÏ·Á¸é Áß°£ ÄÄÆ÷³ÍÆ®°¡ À̺¥Æ®¸¦ Àü´ÞÇØ¾ß ÇÕ´Ï´Ù°ªÀÌ ¾ø´Â on:message À̺¥Æ® Áö½Ã¹®Àº ¡®¸ðµç ¸Þ½ÃÁö À̺¥Æ® Àü´Þ¡¯À» ÀǹÌÇÕ´Ï´Ù.
 
App.svelte

Outer.svelte

Inner.svelte

À̺¥Æ® Àü´ÞÀº µ¼ À̺¥Æ®¿¡¼­µµ ÀÛµ¿ÇÕ´Ï´Ù.
 
App.svelte

CustomButton.svelte

bind:value Áö½Ã¾î¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. name °ªÀ» º¯°æÇϸé ÀÔ·Â °ªÀÌ ¾÷µ¥ÀÌÆ®µÉ »Ó¸¸ ¾Æ´Ï¶ó ÀÔ·Â °ªÀÌ º¯°æµÇ¸é nameµµ ¾÷µ¥ÀÌÆ®µË´Ï´Ù.

Àбâ Àü¿ë this ¹ÙÀεùÀº ¸ðµç ¿ä¼Ò¿¡ Àû¿ëµÇ¸ç ·»´õ¸µµÈ ¿ä¼Ò¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù¿¹¸¦ µé¾î <canvas> ¿ä¼Ò¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù.

¸ðµç ÄÄÆ÷³ÍÆ®´Â »ý¼ºµÉ ¶§ ½ÃÀÛµÇ°í ¼Ò¸êµÉ ¶§ ³¡³ª´Â ¼ö¸í ÁֱⰡ ÀÖ½À´Ï´ÙÇØ´ç ¼ö¸í Áֱ⠵¿¾È Áß¿äÇÑ ¼ø°£¿¡ Äڵ带 ½ÇÇàÇÒ ¼ö ÀÖ´Â ¸î °¡Áö ±â´ÉÀÌ ÀÖ½À´Ï´Ù. onMount´Â ÄÄÆ÷³ÍÆ®°¡ µ¼¿¡ óÀ½ ·»´õ¸µÇÑ ÈÄ ½ÇÇàµË´Ï´Ù.

±¸¼º ¿ä¼Ò°¡ ¼Ò¸êµÉ ¶§ Äڵ带 ½ÇÇàÇÏ·Á¸é onDestroy¸¦ »ç¿ëÇÕ´Ï´Ù.

beforeUpdate ÇÔ¼ö´Â µ¼ÀÌ ¾÷µ¥ÀÌÆ®µÈ±â Á÷Àü¿¡ ¹ß»ýÇϵµ·Ï ÀÛ¾÷À» ¿¹¾àÇÕ´Ï´Ù. afterUpdate ÇÔ¼ö´Â µ¼ÀÌ µ¥ÀÌÅÍ¿Í µ¿±âÈ­µÇ¸é Äڵ带 ½ÇÇàÇÏ´Â µ¥ »ç¿ëµË´Ï´Ù.

tick ÇÔ¼ö´Â ¾ðÁ¦µçÁö È£ÃâÇÒ ¼ö ÀÖ´Ù´Â Á¡¿¡¼­ ´Ù¸¥ ¼ö¸í ÁÖ±â ÇÔ¼ö¿Í ´Ù¸¨´Ï´Ù. pending ÁßÀÎ »óÅ º¯°æ »çÇ×ÀÌ µ¼¿¡ Àû¿ëµÇ´Â Áï½Ã resolveµÇ´Â promise¸¦ ¹ÝȯÇÕ´Ï´Ù.


¸¶Ä¡¸ç

½ºº§Æ®´Â 3´ë ÇÁ·ÐÆ®¿£µå ÇÁ·¹ÀÓ¿öÅ©¿Í ´Ù¸¥ ¹æÇ⼺À» °¡Áö°í ¸¸µé¾îÁø ÇÁ·¹ÀÓ¿öÅ©·Î  ºü¸¥ ¼Óµµ¿Í °£°áÇÑ Äڵ带 ÀÚ¶ûÇÏ°í ·¯´× Ä¿ºê°¡ ³ôÁö ¾ÊÀº ÆíÀÔ´Ï´Ù¾ÆÁ÷Àº ÇÑâ ¼ºÀåÇÏ°í ÀÖ´Â ±â¼úÀ̳ª ¶Ù¾î³­ ÀåÁ¡À¸·Î ÀÎÇØ Àü¼¼°èÀûÀ¸·Î Å« ÁÖ¸ñÀ» ¹Þ°í ÀÖ´Â ¸¸Å­ Á¶¸¸°£ 3´ë ÇÁ·¹ÀÓ¿öÅ©¿¡ Áö°¢ º¯µ¿À» ÀÏÀ¸Å°¸ç µî±ØÇÒ °¡´É¼ºµµ ÃæºÐÇÏ´Ù°í »ý°¢ÇÕ´Ï´Ù»õ·Î¿î Æ®·»µå¿Í ½Å±â¼ú¿¡ °ü½ÉÀÌ ¸¹Àº ÇÁ·ÐÆ®¿£µå °³¹ßÀÚ¶ó¸é ½ºº§Æ®¸¦ ÀÍÇôº¸°í ½Å±Ô ÇÁ·ÎÁ§Æ®¿¡ Àû¿ëÇØ º¸´Â °ÍÀ» ±ÇÇÏ´Â ¹ÙÀÔ´Ï´Ù.

[±×¸² 6] ½ºº§Æ®¸¦ »ç¿ëÇÏ´Â ±â¾÷µé

¢º  ÇØ´ç ÄÜÅÙÃ÷´Â ÀúÀ۱ǹý¿¡ ÀÇÇÏ¿© º¸È£¹Þ´Â ÀúÀÛ¹°·Î ±â°íÀÚ¿¡°Ô ÀúÀÛ±ÇÀÌ ÀÖ½À´Ï´Ù.