DevLog

[JavaScript] ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ „์—ญ ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ๋กœ ๊ฐœ์„ ํ•˜๊ธฐ

hyonie 2025. 8. 22. 16:20

์›น ํ”„๋กœ์ ํŠธ๋ฅผ ์ง„ํ–‰ํ•˜๋‹ค ๋ณด๋ฉด ๋ฉ”์ธ ํŽ˜์ด์ง€, ์ด๋ฒคํŠธ ํŽ˜์ด์ง€ ๋“ฑ ์—ฌ๋Ÿฌ ํ™”๋ฉด์—์„œ ๋™์ผํ•œ HTML ๊ตฌ์กฐ๊ฐ€ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋“ฑ์žฅํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์ฝ”๋“œ๋ฅผ ๊ทธ๋Œ€๋กœ ๋‘๋ฉด ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์–ด๋ ค์›Œ์ง€๊ณ , ์ƒˆ๋กœ์šด ์š”๊ตฌ์‚ฌํ•ญ์ด ์ƒ๊ฒผ์„ ๋•Œ ๋ชจ๋“  ํŽ˜์ด์ง€๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•˜๋Š” ๋ถˆํŽธํ•จ์ด ์ƒ๊น๋‹ˆ๋‹ค.


์ด๋ฒˆ ์ž‘์—…์—์„œ๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด, ๋ฐ˜๋ณต๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ „์—ญ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ปดํฌ๋„ŒํŠธ๋กœ ๋ชจ๋“ˆํ™”ํ•˜์—ฌ ๊ณตํ†ต์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ฐœ์„ ํ–ˆ์Šต๋‹ˆ๋‹ค.

 

๐Ÿ“‚ ๋ชฉ์ฐจ

     


    1. ์ „์—ญ ๋„ค์ž„์ŠคํŽ˜์ด์Šค ํŒจํ„ด

    window.RentalComponents = window.RentalComponents || {};
    • ์ „์—ญ ๋ณ€์ˆ˜ ์˜ค์—ผ(Global Pollution) ๋ฐฉ์ง€.
    • window ๊ฐ์ฒด์— RentalComponents๋ผ๋Š” ๋„ค์ž„์ŠคํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜์—ฌ ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ์ด ์•ˆ์— ๋ชจ์•„ ๊ด€๋ฆฌ
    • ์ด๋ฏธ ์„ ์–ธ๋œ ๊ฐ’์ด ์žˆ์œผ๋ฉด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•˜๊ณ (|| {}), ์—†์œผ๋ฉด ์ƒˆ ๊ฐ์ฒด ์ƒ์„ฑ.

    2. ํ•จ์ˆ˜ ์ •์˜ ๋ฐฉ์‹

    RentalComponents.createProductPointHtml = function() { ... };
    • ์ต๋ช… ํ•จ์ˆ˜(Anonymous Function)๋ฅผ ๋ณ€์ˆ˜์— ํ• ๋‹นํ•˜๋Š” ๋ฐฉ์‹.
    • ํ™”์‚ดํ‘œ ํ•จ์ˆ˜(=>) ๋Œ€์‹  function ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•œ ์ด์œ ๋Š” ๊ตฌํ˜• ๋ธŒ๋ผ์šฐ์ € ํ˜ธํ™˜์„ฑ ๋•Œ๋ฌธ
    • ๋ฐ˜ํ™˜๊ฐ’์€ HTML ๋ฌธ์ž์—ด(string)๋กœ, ํ•„์š”ํ•œ ์œ„์น˜์— ์‚ฝ์ž… ๊ฐ€๋Šฅ

    3. HTML ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ

    return '<div class="pro_point">' +
           '<span class="pro_point_best"><img src="/images/pro_best.jpg" alt="๋ฒ ์ŠคํŠธ" /></span>' +
           ...
           '</div>';
    • + ์—ฐ์‚ฐ์ž๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฌธ์ž์—ด์„ ์ด์–ด๋ถ™์ด๋Š” ์ „ํ†ต์ ์ธ ๋ฐฉ์‹
    • ES6 ์ดํ›„์—๋Š” ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด(`)์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ€๋…์„ฑ์ด ๋” ์ข‹์ง€๋งŒ, ๊ตฌ๋ฒ„์ „ ํ˜ธํ™˜์„ ์œ„ํ•ด ๊ธฐ์กด ๋ฐฉ์‹ ์œ ์ง€

    4. jQuery ํ™œ์šฉ

    $('.pro_point_placeholder').each(function() {
        $(this).html(RentalComponents.createProductPointHtml());
    });
    • jQuery์˜ .each()๋กœ ๋ฐ˜๋ณต๋ฌธ ์ฒ˜๋ฆฌ
    • .html()์„ ์ด์šฉํ•ด placeholder ์˜์—ญ์„ ์‹ค์ œ HTML๋กœ ์น˜ํ™˜
    • ๊ฒฐ๊ณผ์ ์œผ๋กœ ํŽ˜์ด์ง€ ๋‚ด ํŠน์ • ์œ„์น˜์— ๋™์ ์œผ๋กœ UI๋ฅผ ์ƒ์„ฑ

     

    5. ๋ฐ์ดํ„ฐ ์†์„ฑ(Data Attribute) ํ™œ์šฉ

    var imgPath = $(this).data('img-path') || '';
    var imgFileName = $(this).data('img-filename') || '';
    • <div data-img-path="/images/" data-img-filename="test.png"></div> data- ์†์„ฑ์„ ์ฝ์–ด์™€ ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ ๋ฐ ํŒŒ์ผ๋ช…์„ ๋™์ ์œผ๋กœ ์กฐํ•ฉ
    • ๊ฐ’์ด ์—†์„ ๊ฒฝ์šฐ ''(๋นˆ ๋ฌธ์ž์—ด)๋กœ ์ฒ˜๋ฆฌํ•ด ์˜ค๋ฅ˜ ๋ฐฉ์ง€

     

    6. ์ดˆ๊ธฐํ™” ๋กœ์ง

    $(document).ready(function() {
        RentalComponents.initializeComponents();
    });
    • DOM์ด ์ค€๋น„๋˜๋ฉด ์ž๋™ ์‹คํ–‰.
    • initializeComponents()์—์„œ ๊ฐ placeholder(.pro_point_placeholder, .thumb_gift_placeholder ๋“ฑ)๋ฅผ ์ฐพ์•„ HTML๋กœ ๋ณ€ํ™˜
    • ํŽ˜์ด์ง€ ๋กœ๋“œ ์‹œ์ ์— ํ•„์š”ํ•œ UI๋ฅผ ์ž๋™์œผ๋กœ ๋ Œ๋”๋ง

     

    7. ํ•˜์œ„ ํ˜ธํ™˜์„ฑ ์ฒ˜๋ฆฌ

    window.createProductPointHtml = RentalComponents.createProductPointHtml;
    • ๊ธฐ์กด ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋˜ createProductPointHtml() ํ˜ธ์ถœ ๋ฐฉ์‹์„ ์œ ์ง€
    • ์ƒˆ๋กœ์šด ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ๊ตฌ์กฐ์™€ ํ•จ๊ป˜ ๋™์ž‘ํ•˜๋„๋ก ๋ฐฑ์›Œ๋“œ ํ˜ธํ™˜์„ฑ ํ™•๋ณด

    8. ๋ฌธ๋ฒ•/์„ค๊ณ„ ํฌ์ธํŠธ ์ •๋ฆฌ

    • ๋ชจ๋“ˆ ํŒจํ„ด: ๋„ค์ž„์ŠคํŽ˜์ด์Šค ๊ธฐ๋ฐ˜์œผ๋กœ ํ•จ์ˆ˜ ๊ด€๋ฆฌ.
    • ๋™์  HTML ๋ Œ๋”๋ง: ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜ ํ›„ jQuery .html() ์‚ฝ์ž….
    • ์žฌ์‚ฌ์šฉ์„ฑ: ์ƒํ’ˆ ํฌ์ธํŠธ, ์‚ฌ์€ํ’ˆ, ์ด๋ฏธ์ง€ ๋“ฑ ๋ฐ˜๋ณต ์ฝ”๋“œ๋ฅผ ํ•จ์ˆ˜ํ™”ํ•˜์—ฌ ์ค‘๋ณต ์ œ๊ฑฐ
    • ํ™•์žฅ์„ฑ: ์ƒˆ๋กœ์šด ์œ ํ˜•์ด ์ƒ๊ฒจ๋„ ํ•จ์ˆ˜ ์ถ”๊ฐ€๋งŒ์œผ๋กœ ์†์‰ฝ๊ฒŒ ํ™•์žฅ ๊ฐ€๋Šฅ

    ๋งˆ๋ฌด๋ฆฌ

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

    ๐Ÿ‘‰ ์•ž์œผ๋กœ๋Š” ํŽ˜์ด์ง€๋งˆ๋‹ค ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ๋Š” ๋Œ€์‹ , ํ•œ ๊ณณ์—์„œ๋งŒ ๊ด€๋ฆฌํ•˜๊ณ  ์ „์ฒด์—์„œ ์žฌ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ƒ์‚ฐ์„ฑ๊ณผ ์•ˆ์ •์„ฑ์„ ๋†’์—ฌ ๋‚˜๊ฐˆ ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.