๐ŸŠ ์˜ค๋ Œ์ง€ ๋งˆ์ผ“ ํ”„๋กœ์ ํŠธ ํšŒ๊ณ 

Woosangยท2022๋…„ 2์›” 4์ผ
0

Project

๋ชฉ๋ก ๋ณด๊ธฐ
3/3
post-thumbnail

์˜ค๋ Œ์ง€ ๋งˆ์ผ“

๊ธฐ์ˆ  ์Šคํƒ

  • JavaScript(ES6), CSS(SCSS), HTML

์‹œ์ž‘ํ•˜๊ธฐ

ํ”„๋ก ํŠธ ์—”๋“œ ๊ณต๋ถ€ ์‹œ์ž‘ ์ดํ›„ ์ฒ˜์Œ์œผ๋กœ ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€๋ฅผ ํ˜‘์—…์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝํ—˜์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

์ฒ˜์Œ์ธ ๋งŒํผ ๋งŽ์€ ์‹œํ–‰์ฐฉ์˜ค๋“ค์„ ๊ฒช์—ˆ์ง€๋งŒ ๊ฒฐ๊ณผ๋ฌผ์ด ๋‚˜์™”๋‹ค๋Š” ๊ฒƒ์— ํฐ ๋™๊ธฐ๋ถ€์—ฌ์™€ ์„ฑ์ทจ๊ฐ์„ ์–ป์—ˆ๋‹ค. ๋˜ํ•œ, ์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ๊ณ„๊ธฐ๋กœ, ์‹œ๋ฉ˜ํ‹ฑํ•œ ๋งˆํฌ์—…, scss์˜ ํŒŒ์ผ ๋ถ„๋ฆฌ ๋ฐ sass ๋ช…๋ น์–ด์™€ js Dom control์— ๋Œ€ํ•œ ์ดํ•ด๊ฐ€ ๋†’์•„์กŒ๋‹ค.

์ดˆ๋ฐ˜์—๋Š” ํŒ€ ํ”„๋กœ์ ํŠธ๋กœ ์ง„ํ–‰ํ–ˆ์ง€๋งŒ, ํ”„๋กœ์ ํŠธ ์ดํ•ด๋„๋ฅผ ๋†’์ด๊ณ  ์ „์ฒด์ ์ธ ํ๋ฆ„์„ ์•Œ๊ธฐ ์œ„ํ•ด ๊ฐœ์ธ์œผ๋กœ๋„ ๋ณ‘ํ–‰ํ•˜์—ฌ ์ง„ํ–‰ํ•˜๋ฉฐ, ํŒ€์›๋“ค์ด ๋ง‰ํžˆ๋Š” ๋ถ€๋ถ„๋“ค์„ ๊ฐ™์ด ๊ณ ๋ฏผํ•˜๋ฉฐ ์ง„ํ–‰ํ–ˆ๋‹ค.

์–ด๋ ค์› ๋˜ ๋ถ€๋ถ„


๋งŽ์€ ์–ด๋ ค์›€์ด ์žˆ์—ˆ์ง€๋งŒ ๊ทธ ์ค‘ ๊ฐ€์žฅ ์ƒ๊ฐ์„ ๋งŽ์ด ํ–ˆ๋˜ ๋ถ€๋ถ„์€ ๊ฐ feed์˜ ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด์Šค ๊ธฐ๋Šฅ์„ ๋„ฃ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.
์ด๋ฏธ์ง€ ํ•˜๋‹จ์— ์บ๋Ÿฌ์…€ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด ์Šฌ๋ผ์ด๋“œ๋˜๋Š” ๊ธฐ๋Šฅ

์ดˆ๋ฐ˜์— ์ž‘์„ฑ๋œ ์ฝ”๋“œ๋Š” ํ•˜๋“œ ์ฝ”๋”ฉ๋œ HTML์— ์žˆ๋Š” feed์— ์ด๋ฏธ์ง€๋“ค์„ ์Šฌ๋ผ์ด๋“œ๋˜๊ฒŒ ๋งŒ๋“ค์–ด์ ธ์žˆ์–ด ๊ธฐ๋Šฅ์ ์œผ๋กœ๋Š” ๋ฌธ์ œ ์—†์–ด ๋ณด์˜€๋‹ค.

ํ•˜์ง€๋งŒ ์‚ฌ์šฉ์ž๋“ค์˜ feed๋ฅผ ๋™์ ์œผ๋กœ ์ƒ์„ฑํ•ด ํ™”๋ฉด์— ๊ทธ๋ ค์ฃผ๋Š” ๊ณผ์ •์—์„œ ์œ„์—์„œ ์ž‘์„ฑํ•œ ์ด๋ฏธ์ง€์Šฌ๋ผ์ด๋“œ ์ฝ”๋“œ๋Š” ์ตœ์ƒ๋‹จ ํ•œ๊ฐœ์˜ feed์— ๋Œ€ํ•ด์„œ๋งŒ ์Šฌ๋ผ์ด๋“œ ๊ธฐ๋Šฅ์ด ์ ์šฉ๋˜๊ณ  ๋‚˜๋จธ์ง€๋Š” ์ ์šฉ์ด ๋˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. -> (querySelector๋กœ ์žก์•„์คฌ๊ธฐ ๋–„๋ฌด๋„ค)
(feed ์ƒ์„ฑ์—์„œ ๋ถ€ํ„ฐ ๋น„์Šทํ•œ ๋ฌธ์ œ ๋ฐœ์ƒ -> ๊ฐ feed์— id๋ฅผ ๋„ฃ์–ด์ฃผ์–ด feed๋ฅผ ์ƒ์„ฑํ•ด ๋ฌธ์ œ ํ•ด๊ฒฐ)

๋ฌธ์ œ์ •์˜

  1. ๊ธฐ์กด ์ฝ”๋“œ์—์„œ๋Š” querySelector์˜ className์œผ๋กœ ์ ‘๊ทผ
    1-1. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฒคํŠธ๊ฐ€ ์ƒ๋‹จ์— ์žˆ๋Š” feed์—๋งŒ ์ ์šฉ
  2. querySelector ๋Œ€์‹  ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ feed๋ฅผ ์žก์•„์ค˜์•ผํ•œ๋‹ค.
  3. ๊ฐ feed๋ฅผ ์žก๊ณ  ๋ชจ๋“  feed์— ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ์•„์ฃผ์–ด์•ผํ•œ๋‹ค.

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•

๋ฐฉ์•ˆ 1. querySelectorAll

  • querySelectorAll๋กœ ํ•ด๋‹น class๋ฅผ ๋ชจ๋‘ ์žก์€ ๋‹ค์Œ ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด ๋ชจ๋“  feed์— ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ์•„์ค€๋‹ค. ๐Ÿ˜…

๋ฐฉ์•ˆ 2. ์ด๋ฒคํŠธ ์œ„์ž„ ์‚ฌ์šฉ

  • feed๋“ค์„ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” feed container์— ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ์•„์ฃผ๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์นœ๊ตฌ๋ฅผ ์‹๋ณ„ํ•˜์—ฌ ์Šฌ๋ผ์ด๋“œ ๊ธฐ๋Šฅ์„ ๋„ฃ์–ด์ฃผ๊ธฐ

์„ ํƒ (์ด๋ฒคํŠธ ์œ„์ž„์— ๋น ์ง€๋‹ค...๐Ÿฅฐ)

  • ์ดˆ๋ฐ˜์— ๊ฐ€์žฅ ๋จผ์ € ๋“  ์ƒ๊ฐ์€ ๋ฐฉ์•ˆ 1๋ฒˆ์˜ querySelectorAll๋กœ ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ์•„์ค„ ์ƒ๊ฐ์„ ํ–ˆ์ง€๋งŒ ๋„ˆ๋ฌด ๋น„ํšจ์œจ์ ์ผ ๊ฒƒ์ด๋ผ๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.

    Why. ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณต๋ถ€ํ•˜๊ธฐ ์‹œ์ž‘ํ•  ๋•Œ๋ถ€ํ„ฐ ๋ฐ˜๋ณต๋ฌธ์„ ์ตœ๋Œ€ํ•œ ์ ๊ฒŒ ์‚ฌ์šฉํ•˜์ž๋Š” ๊ฐœ์ธ์ ์ธ ์‹ ๋…? + ์ฝ”๋“œ๊ฐ€ ๋ชป์ƒ๊ฒผ๋‹ค...

    ์‚ฌ์šฉ์ž๊ฐ€ ๋ชจ๋“  feed๋ฅผ clickํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ๋Š”๋ฐ, ์ผ์ผํžˆ ๋ชจ๋“  ๊ณณ์— ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ๊ณ  ์žˆ๋Š” ์‹œ๊ฐ„์ด ์•„๊น๋‹ค๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ ๋˜์—ˆ๋‹ค..

  • ํ•ด์„œ ์ฒœ์ฒœํžˆ ๋‹ค์‹œ ์ƒ๊ฐ์„ ํ•ด๋ณด๋‹ˆ ์ด๋ฒคํŠธ ์œ„์ž„์„ ํ†ตํ•ด feed๋ฅผ ๊ฐ์‹ธ๊ณ  ์žˆ๋Š” container ์นœ๊ตฌ์—๊ฒŒ ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ์•„์ฃผ๊ณ  ์ด๋ฒคํŠธ ์บก์ณ๋ง๊ณผ ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง์œผ๋กœ ํ•ด๋‹น feed์˜ ์บ๋Ÿฌ์…€ ๋ฒ„ํŠผ์„ ์žก์•„์ฃผ๋ฉด ์–ด๋–จ๊นŒ๋ผ๋Š” ์ƒ๊ฐ์„ ํ•˜๊ฒŒ๋˜์—ˆ๋‹ค.

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด ๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ๊ฒƒ ์ด์ƒ์œผ๋กœ ๋” ๋‹ค์–‘ํ•œ ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์ฒ˜๋ฆฌ๋ฅผ ํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

์ดˆ๋ฐ˜ ์ƒ๊ฐ : ์ด๋ฒคํŠธ ์œ„์ž„์œผ๋กœ ๊ฐ feed์— ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ ๊ธฐ๋Šฅ ๋„ฃ์–ด์•ผ์ง€

๊ตฌํ˜„ ์ดํ›„ ์ƒ๊ฐ : ๊ฐ๊ฐ์˜ feed์— ์ผ์–ด๋‚˜๋Š” ๋ชจ๋“  ์ด๋ฒคํŠธ๋ฅผ ์กฐ๊ฑด๋ฌธ์„ ํ†ตํ•ด ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„ค?! ๋‹ค๋ฅธ ํŒŒ์ผ๋“ค๋„ ๋ฆฌํŽ™ํ† ๋งํ•˜๋Ÿฌ ๊ฐ€์ž

  • event.target์„ ํ†ตํ•ด ์‚ฌ์šฉ์ž์˜ ์•ก์…˜์ด ์ผ์–ด๋‚œ Element์„ ๋ฐ›๊ณ , ํ•ด๋‹น Element(์ดํ•˜ CurrentNode)์— ๋ถ€๋ชจ(CurrentNode.parentElement)์™€ ๋ถ€๋ชจ์˜ ์ด์ „ ํ˜•์ œ(CurrentNode.parentElement.previousElementSibling) ์š”์†Œ๋“ค์„ ์ฐพ์•„ ํ•ด๋‹น ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ ํ•จ์ˆ˜์— ๋„ฃ์–ด์ฃผ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์˜€๋‹ค.
<li id=post-${post.id} class="home-post">
  <div class=${slideWrapperClassName}>
    <!-- ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œํ•  ์˜์—ญ -->
    <ul class="slide-list">
      <li class="slide">
        <img src=${postImageList[0]} alt="ํฌ์ŠคํŠธ ์‚ฌ์ง„" class="post-img"> 
      </li>
      <li class="slide">
        <img src=${postImageList[1]} alt="ํฌ์ŠคํŠธ ์‚ฌ์ง„" class="post-img"> 
      </li>
      <li class="slide">
        <img src=${postImageList[2]} alt="ํฌ์ŠคํŠธ ์‚ฌ์ง„" class="post-img"> 
      </li>
    </ul>
    <!-- ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œํ•  ์˜์—ญ ๋ -->
    <!-- ์บ๋Ÿฌ์…€ ๋ฒ„ํŠผ ์˜์—ญ -->
    <div class="button-wrapper">
      <button type="button" class="on" name="0"></button>
      <button type="button" name="1"></button>
      <button type="button" name="2"></button>
    </div>
    <!-- ์บ๋Ÿฌ์…€ ๋ฒ„ํŠผ ์˜์—ญ ๋ -->
  </div>
</li>
// ์ด๋ฏธ์ง€ ์Šฌ๋ผ์ด๋“œ ์ด๋™ ๊ณ„์‚ฐ ํ•จ์ˆ˜
function moveSlide(num, slideList) {
  slideList.style.left = -num * (SLIDE_WIDTH + SLIDE_MARGIN) + "px";
}

function slideAnimation(Node) {
  const ControlList = Node.parentElement; // .button-wrapper
  const ControlBtnAll = ControlList.querySelectorAll("button"); // button๋“ค
  const slideList = ControlList.previousElementSibling; // .slide-list

  // ์ด์ „์— ์„ ํƒ๋˜์–ด ์žˆ๋˜ ์œ„์น˜์™€ ์ด๋™ํ•  ์œ„์น˜ ์ฐพ๊ธฐ
  let prevIdx;
  let moveIdx;
  ControlBtnAll.forEach((el, idx) => {
    if (el.className === "on") {
      prevIdx = idx;
    } else if (+Node.name === idx) {
      moveIdx = idx;
    }
  });
  ControlBtnAll[prevIdx].classList.remove("on");
  Node.classList.add("on");
  moveSlide(moveIdx, slideList);
}

๋ฐฐ์šด์ 

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•˜๋ฉด์„œ Dom Control์— ๋Œ€ํ•ด ๋งŽ์€ ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ querySelector์™€ querySelectorAll์„ ์ ์ ˆํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค.

๋˜ํ•œ, element๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ๋“ค์ด ์–ผ๋งˆ๋‚˜ ๋‹ค์–‘ํ•œ์ง€ ์ƒ๊ธฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ์œผ๋ฉฐ, console.dir์„ ํ†ตํ•ด element๋“ค์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์†์„ฑ๋“ค์„ ์ฐพ์•„๋ณด๋Š” ์—ฐ์Šต์„ ํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์„ ํ–ˆ๋‹ค. console.dir์„ ์‚ฌ์šฉํ•ด ํ˜•์ œ์š”์†Œ๋ฅผ ํƒ์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ชฐ๋ž๋‹ค๋ฉด ์•„๋งˆ๋„ ์œ„์—์„œ ์ œ์‹œํ•œ ๋ฌธ์ œ ํ•ด๊ฒฐ๋ฐฉ์•ˆ 1๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์„ ๊ฒƒ ๊ฐ™๋‹ค. ๋‹คํ–‰์ด ๋ชป์ƒ๊ธด ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„ ๊ธฐ๋ถ„์ด๊ฐ€ ์ข‹๋‹ค.

querySelectorAll๋กœ ์š”์†Œ๋“ค์„ ์žก์œผ๋ฉด ํ•ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๋Š” Array๊ฐ€ ์•„๋‹ˆ๋ผ NodeList์—ฌ์„œ Array ๋ฉ”์†Œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์—ˆ๋‹ค.

ํ•˜์ง€๋งŒ, JavaScript์˜ callํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•ด NodeList๊ฐ์ฒด์—์„œ Array ๋ฉ”์†Œ๋“œ๋“ค์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝํ—˜์„ ํ•  ์ˆ˜ ์žˆ์–ด. ๋‚˜์˜ JS ์ดํ•ด๋„๊ฐ€ 1 ์ฆ๊ฐ€ํ–ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๋”ฅ๋‹ค์ด๋ธŒ ์Šคํ„ฐ๋””์—์„œ ๊ณต๋ถ€ํ•  ๋•Œ .call ๋ฉ”์†Œ๋“œ์™€ .apply๋ฉ”์†Œ๋“œ๋Š” ์™œ ์žˆ๋Š”์ง€ ์˜๋ฌธ์ด ๋“ค์—ˆ์ง€๋งŒ ์ด๋ ‡๊ฒŒ ํ™œ์šฉ์„ ํ•˜๋‹ˆ ๊ธฐ๋ถ„์ด ์งœ๋ฆฟํ–ˆ๋‹ค. ์ด ๋ง›์— ์ฝ”๋”ฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ๊ฐ€ ์‹ถ๋‹ค ๐Ÿค—

call ์‚ฌ์šฉ์˜ˆ์‹œ!

async function productAPI(method, productId=false) {
  const imageUrl = $previewImage.src;

  // ์„œ๋ฒ„์— ๋ณด๋‚ผ product ๋ฐ์ดํ„ฐ ์ƒ์„ฑ
  // $inputList = [input#imageInput, input#productName, input#productPrice, input#productLink]
  const product = { "itemImage": imageUrl, };
  [].slice.call($inputList, 1).forEach((el) => { 
    // price์ธ ๊ฒฝ์šฐ ์ •์ˆ˜๋กœ ๋ณ€ํ™˜
    product[el.name] = (el.name === "price") ? parseInt(el.value) : el.value;
  });
}

์ „์ฒด์ฝ”๋“œ

  1. ์„œ๋ฒ„๋กœ ๋ณด๋‚ผ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•˜๋Š” ๊ณผ์ •์—์„œ ์ผ์ผํžˆ ์š”์†Œ๋ฅผ ๋ถˆ๋Ÿฌ์™€ ๊ฐ’์„ ๋„ฃ์œผ๋ฉด ์ฝ”๋“œ๊ฐ€ ์•ˆ์ด์˜๊ธฐ ๋•Œ๋ฌธ์— querySelectorAll๋กœ ์žก๊ณ  forEach๋ฅผ ์‚ฌ์šฉํ•  ์ƒ๊ฐ์„ ํ–ˆ๋‹ค.
  2. ์ด๋ฏธ์ง€์˜ ๊ฒฝ์šฐ ์š”์†Œ์˜ value๊ฐ’์„ ๋„ฃ๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๋ฏธ๋ฆฌ ์„œ๋ฒ„ ํ†ต์‹ ์œผ๋กœ ๋ฐ›์€ Url์„ ๋„ฃ์–ด์ค˜์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต๋ฌธ์—์„œ ์ œ์™ธํ•˜๊ณ  ์‹ถ์—ˆ๋‹ค.
  3. ์กฐ๊ฑด๋ฌธ์„ ์‚ฌ์šฉํ•ด ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์ฝ”๋“œ๊ฐ€ ๋ชป์ƒ๊ฒจ์ ธ์„œ Array์˜ .slice๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ–ˆ๋‹ค.
  4. ํ•˜์ง€๋งŒ querySelectorAll๋กœ ์žก์€ ์š”์†Œ์˜ ๊ฐ์ฒด๋Š” NodeList ์ด๊ธฐ ๋•Œ๋ฌธ์— slice๋ฉ”์†Œ๋“œ๊ฐ€ ์—†๋‹ค๊ณ  ํ•œ๋‹ค.
  5. ๊ทธ๋•Œ ๋ถˆํ˜„๋“ฏ call๋ฉ”์†Œ๋“œ๊ฐ€ ๋– ์˜ฌ๋ผ ์ ์šฉ์„ ํ•ด๋ณด๋‹ˆ ์ž‘๋™์ด ์ž˜๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค. (์•„์ฃผ ๊ธฐ๋ถ„์ด ๋„ˆ๋ฌด ์ข‹์•˜๋‹ค.)

ํšŒ๊ณ  ๋ฐ ๋Š๋‚€์ 

์ด๋ฒˆ ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉด์„œ JS๋ž‘ ๊ธˆ๋ฐฉ ์นœํ•ด์งˆ ์ˆ˜ ์žˆ์—ˆ๋‹ค. ์—ญ์‹œ ์ฝ”๋”ฉ์€ ๋„ˆ๋ฌด ์žฌ๋ฏธ์žˆ๋Š” ์นœ๊ตฌ์ธ ๊ฒƒ ๊ฐ™๋‹ค.

๊ทธ๋ฆฌ๊ณ  ํŒ€์›๋“ค์ด ๋ชจ๋ฅด๋Š” ๋ถ€๋ถ„๋“ค์„ ๊ฐ™์ด ๊ณ ๋ฏผํ•˜๋ฉด์„œ ํ’€์–ด ๋‚˜๊ฐ€๋‹ˆ ๋” ๋งŽ์€ ๊ฒƒ๋“ค์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ๋Š” ์‹œ๊ฐ„์ด์—ˆ๋‹ค.

ํ•œ ๊ฐ€์ง€ ์•„์‰ฌ์šด ์ ์€ ๋‚ด๊ฐ€ ์กฐ๊ธˆ ๋” ์ž˜ํ•˜๊ณ , ์•Œ๊ณ  ์žˆ๋Š”๊ฒŒ ๋งŽ์•˜๋‹ค๋ฉด ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋ฉฐ ์‹œํ–‰์ฐฉ์˜ค๋ฅผ ์กฐ๊ธˆ ๋œ ๊ฒช๊ณ  ์ˆ˜์›”ํ•˜๊ฒŒ ํŒ€ ํ”„๋กœ์ ํŠธ๋ฅผ ์ด์–ด๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์—ˆ๋Š”๋ฐ ๋งŽ์ด ๊ณ ์ƒํ•ด์ค€ ํŒ€์›๋“ค์—๊ฒŒ ๊ณ ๋งˆ์šด ๋งˆ์Œ ๋ฟ์ด๋‹ค.

์•ž์œผ๋กœ ๋” ๋งŽ์€ ๊ฒƒ๋“ค์„ ๋งŒ๋“ค์–ด๊ฐ€๋ฉด์„œ ์„ฑ์žฅํ•ด์•ผ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ ๋‹ค.

๋‹ค์Œ ํ”„๋กœ์ ํŠธ๋„ ํ•ญ์ƒ ์ƒ๊ฐํ•˜๋ฉด์„œ ์ฝ”๋”ฉํ•˜์ž~~ ํ™”์ดํŒ…!!

0๊ฐœ์˜ ๋Œ“๊ธ€