๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
JS

<TIL> / CSS์™€ JavaScript์˜ ์ฐจ์ด ๋ฐ fetch์™€ ํ•ด์„

by ๊ถŒ์Šพํ–„ 2023. 5. 17.

 ์ด ๊ธ€์€ ์Šค์Šค๋กœ ํ•™์Šตํ•œ ๋‚ด์šฉ์„ ์ƒ๊ธฐ์‹œํ‚ค๊ณ ์ž ์ž‘์„ฑํ•˜๋Š” ๊ธ€์ด๋ฏ€๋กœ, 

 ํ˜น์—ฌ๋‚˜ ์ฝ”๋“œ๋‚˜ ์ •์˜๊ฐ€ ์ž˜๋ชป ์–ธ๊ธ‰๋œ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด, 

 ํ”ผ๋“œ๋ฐฑ ๋ถ€ํƒ๋“œ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. 


 <๊ธฐ๋ณธ๊ฐœ๋… >

 

HTML : ๋ผˆ๋Œ€

 

CSS : ๊พธ๋ฏธ๊ธฐ

 

JavaScript : ์›€์ง์ด๊ธฐ

 

HTML์€ <head> ์™€ <body>๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋‹ค.

<head> : ๋ˆˆ์—๋Š” ๋ณด์ด์ง€ ์•Š์ง€๋งŒ ์›น์—๋Š” ์ค‘์š”ํ•œ ์ •๋ณด๋ฅผ ๋‹ด๊ณ ์žˆ๋Š” ๊ณณ,

๊พธ๋ฉฐ์ฃผ๋Š” CSS์™€ ์›€์ง์ž„์„ ์ฃผ๋Š” JavaScript๊ฐ€

๋ผˆ๋Œ€ HTML์˜ <head>๋ถ€๋ถ„์— ๋“ค์–ด๊ฐ„๋‹ค.


<TIL> / HTML, CSS, JavaScript ๋ฅผ ์จ์„œ ๋งŒ๋“ค์–ด๋ณธ TIL ํŽ˜์ด์ง€ "์ „์ฒด ์ฝ”๋“œ"

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">

    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.0.2/dist/js/bootstrap.bundle.min.js"
        integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM"
        crossorigin="anonymous"></script>

    <title> TIL </title>

    <style>
        @import url('https://fonts.googleapis.com/css2?family=Gowun+Dodum&display=swap');

        * {
            font-family: 'Gowun Dodum', sans-serif;
        }

        .mytitle {
            background-color: green;
            color: white;

            height: 250px;

            /* linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)) <-- ๋ฐฐ๊ฒฝ ์–ด๋‘ก๊ฒŒ ํ•˜๊ธฐ*/
            background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('https://movie-phinf.pstatic.net/20210715_95/1626338192428gTnJl_JPEG/movie_image.jpg');
            background-position: center;
            background-size: cover;

            /* ๋‚ด์šฉ๋ฌผ์„ ์ •๋ ฌ์‹œํ‚ฌ๋•Œ๋Š” ๋ฐ‘์— 4์ค„์ด ํ•ญ์ƒ ๊ฐ™์ด ๋‹ค๋‹Œ๋‹ค. ๋”ฐ๋ผ์„œ, padding์„ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค. */

            display: flex;
            flex-direction: column; /* column ์„ธ๋กœ, row ๊ฐ€๋กœ */
            align-items: center;
            justify-content: center;
        }

        /*  ๊ฐ™์€ div ์•ˆ์—์žˆ๋Š” button์„ ์ง€์ •ํ•  ๋•Œ class๋ฅผ ๋‹ฌ์ง€ ์•Š๊ณ  ๋ฐ‘์˜ ๋ฐฉ์‹์œผ๋กœ๋„ ์“ธ ์ˆ˜ ์žˆ๋‹ค.
            ๋งŒ์•ฝ h1์„ ์ง€์นญํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด ๊ธฐํ˜ธ ๋’ค button ๋Œ€์‹  h1์„ ์ง‘์–ด ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค. */
        .mytitle > button {
            width: 250px;
            height: 50px;

            background-color: transparent;
            /* ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ปฌ๋Ÿฌ๋ฅผ ์—†์• ์ค˜๋ผ~ ๋ผ๋Š” ๋œป */

            border: 1px solid white;
            /* border๋Š” ํ…Œ๋‘๋ฆฌ solid๋Š” ์‹ค์„  */

            color: white;

            border-radius: 50px;

            margin-top: 20px;
        }

        /* ์ฐธ๊ณ  : hover๋ฅผ ๋ถ™์ด๋ฉด ๋งˆ์šฐ์Šค๋ฅผ ์˜ฌ๋ ค๋†“์•˜์„ ๋•Œ ์ƒ‰์ด ๋ณ€ํ•˜๊ฑฐ๋‚˜ ํ…์ŠคํŠธ์— ๋ณ€ํ™”๋ฅผ ์ค„ ์ˆ˜ ์žˆ๋‹ค. */
        .mytitle>button:hover {
            border: 2px solid white;
        }

        .mycomment {
            color: gray;
        }

        .mycards {
            width: 1200px;
            margin: 20px auto 20px auto;
        }

        .mypost {
            width: 500px;
            margin: 20px auto 20px auto;
            padding: 20px;

            box-shadow: 0px 0px 3px 0px gray;
        /*  ์ฐธ๊ณ  : ์œ„ ์ฝ”๋“œ๋Š” ๊ทธ๋ฆผ์ž์˜ ๊ธธ์ด๋ฅผ ์กฐ์ ˆํ•ด์ฃผ๋Š” ์ฝ”๋“œ.
            ๊ฐ ์ˆซ์ž๋Š” ์•„๋ž˜, ์˜† ๋ฐฉํ–ฅ์œผ๋กœ๋ถ€ํ„ฐ ์–ผ๋งˆ๋‚˜ ๋ฉ€๋ฆฌ ๋–จ์–ด์ ธ ์žˆ๋Š”์ง€๋ฅผ ์˜๋ฏธํ•˜๊ณ  ํ˜„์žฌ๋Š” ๊ฐ€์šด๋ฐ์—์„œ ์‹œ์ž‘ ์ƒํƒœ.
            3์ด๋ž€ ์ˆซ์ž๋งŒ ๋ณ€๊ฒฝํ•ด ๊ทธ๋ฆผ์ž์˜ ๊ธธ์ด๋ฅผ ์กฐ์ ˆํ•ด์ฃผ๋ฉด ๋œ๋‹ค. */
        }

        .mybtns {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: center;

            margin-top: 20px;
        }

        .mybtns>button {
            margin-right: 10px;
        }
    </style>
    <script>

        // function hey() {
        //      alert('hi')
        // }

        // ์œ„ ํ•จ์ˆ˜ ํ•ด์„ :
        // 1. ์˜ํ™” ๊ธฐ๋ก ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด hey()ํ•จ์ˆ˜๊ฐ€ ์ž‘๋™ํ•˜๋Š”๋ฐ ๋‚ด์šฉ์€?
        // 2.{}์•ˆ์˜ ๋‚ด์šฉ
        // {}๋ณด์ž alert('hi')๊ฐ€ ์žˆ๋„ค?
        // 3. ์•„~! ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅด๋ฉด hi๋ผ๋Š” ๋ฌธ์ž์—ด ์•Œ๋ฆผ์ด ๋‚˜์˜ค๊ฒ ๊ตฌ๋‚˜~ ๋ผ๊ณ  ํ•ด์„
        // 4. ์–ธ์ œ?? : (<button onclick="hey()">์˜ํ™” ๊ธฐ๋ก ๋ฒ„ํŠผ</button>) ์•„ํ•˜! '์˜ํ™” ๊ธฐ๋ก ๋ฒ„ํŠผ'์„ ํด๋ฆญํ–ˆ์„ ๋•Œ!

        // ์—ฌ๊ธฐ์„œ onclick์€ html ๊ณผ javascript๋ฅผ ์—ฐ๊ฒฐ์‹œ์ผœ์ฃผ๋Š” ๋‹ค๋ฆฌ์—ญํ• ์„ ํ•œ๋‹ค.

        // console.log(a) : a ์ถœ๋ ฅ / console.log(a[0]) : a์˜ 0๋ฒˆ์งธ ์ถœ๋ ฅ
        // console.log(a+b) : a+b๊ฐ’ ์ถœ๋ ฅ / console.log(a.length) : a์˜ ์ „์ฒด๊ฐฏ์ˆ˜ ์ถœ๋ ฅ

        // dictionary = {} = {key : value , key : value} ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
        // dictionary๋กœ ๋ถˆ๋Ÿฌ์™€ console.log ๋กœ ์ฐ์„๋•Œ log()์•ˆ์— a๋ฅผ ๋„ฃ๊ณ  ๊บฝ์‡ ([])์•ˆ์— dictionary์˜ key๊ฐ’์„ ์ž…๋ ฅํ•œ๋‹ค.

        // let a = {}
        // ์ค‘๊ด„ํ˜ธ๊ฐ€ ์˜จ๋‹ค? ๊ทธ๊ฑฐ๋Š” dictionary

        // let a = []
        // ๊บฝ์‡ ๊ฐ€ ์˜จ๋‹ค? ๊ทธ๊ฑฐ๋Š” list

        // let a = [{}]
        // ๊บฝ์‡ ์•ˆ์— ์ค‘๊ด„ํ˜ธ๊ฐ€ ์˜จ๋‹ค? ๊ทธ๊ฑฐ๋Š” list + dictionary

        // ex)  let a = [
        //          {'name':'์˜์ˆ˜','age':24}
        //          {'name':'์˜์ฒ ','age':15}
        //          {'name':'์˜ํฌ','age':21}
        //      ] ์ผ ๋•Œ,
        //      console.log(a[0]['name']) = ์˜์ˆ˜

        // ์ด๋Ÿฐ์‹์œผ๋กœ ๊ฐ’์„ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค๋Š”๊ฑธ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

        $(document).ready(function () {
            fetch("http://spartacodingclub.shop/sparta_api/weather/seoul").then(res => res.json()).then(data => {
                $('#temp').text(data['temp'])
            })

            fetch("http://spartacodingclub.shop/web/api/movie").then(res => res.json()).then(data => {
                let rows = data['movies']
                $('#cards').empty()
                rows.forEach((a)=>{
                    let title = a['title']
                    let comment = a['comment']
                    let desc = a['desc']
                    let star = a['star']
                    let image = a['image']
                    
                    let star_image = 'โญ'.repeat(star)
                    // ๋ณ„์  ๋ฐ˜๋ณต ํ•˜๋Š” ์ฝ”๋“œ ใ…Žใ…Ž

                    let temp_html = `<div class="col">
                                        <div class="card h-100">
                                            <img src="${image}"
                                                class="card-img-top" alt="...">
                                            <div class="card-body">
                                                <h5 class="card-title">${title}</h5>
                                                <p class="card-text">${desc}</p>
                                                <p>${star_image}</p>
                                                <p class="mycomment">${comment}</p>
                                            </div>
                                        </div>
                                    </div>`
                    $('#cards').append(temp_html)
                })
            })
        })

    </script>

</head>

<body>
    <div class="mytitle">
        <h1>๋‚ด ์ƒ์— ์ตœ๊ณ ์˜ ์˜ํ™”๋“ค</h1>
        <div>ํ˜„์žฌ ์„œ์šธ์˜ ๋‚ ์”จ : <span id="temp">20</span>๋„</div>
        <button onclick="hey()">์˜ํ™” ๊ธฐ๋ก ๋ฒ„ํŠผ</button>
        <!-- ์—ฌ๊ธฐ hey() ๋ฐœ๋™ ๋ฒ„ํŠผ์ด ์žˆ๋‹ค. -->
    </div>
    <div class="mypost">
        <div class="form-floating mb-3">
            <input type="email" class="form-control" id="floatingInput" placeholder="name@example.com">
            <label for="floatingInput">์˜ํ™” URL</label>
        </div>
        <div class="input-group mb-3">
            <label class="input-group-text" for="inputGroupSelect01">๋ณ„ ์ </label>
            <select class="form-select" id="inputGroupSelect01">
                <option selected>--โญ์„ ํƒโญ--</option>
                <option value="1">โญ</option>
                <option value="2">โญโญ</option>
                <option value="3">โญโญโญ</option>
                <option value="4">โญโญโญโญ</option>
                <option value="5">โญโญโญโญโญ</option>
            </select>
        </div>
        <div class="form-floating">
            <textarea class="form-control" placeholder="Leave a comment here" id="floatingTextarea"></textarea>
            <label for="floatingTextarea">์ฝ”๋ฉ˜ํŠธ ๋‚จ๊ฒจ์ฃผ์„ธ์š”.</label>
        </div>
        <div class="mybtns">
            <button type="button" class="btn btn-dark">๊ธฐ๋ก</button>
            <button type="button" class="btn btn-outline-dark">๋‹ซ๊ธฐ</button>
        </div>
    </div>
    <div class="mycards">
        <div id="cards" class="row row-cols-1 row-cols-md-4 g-4">
            <div class="col">
                <div class="card h-100">
                    <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                        class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">์˜ํ™” ์ œ๋ชฉ</h5>
                        <p class="card-text">์ฝ”๋ฉ˜ํŠธ</p>
                        <p>โญโญโญ</p>
                        <p class="mycomment">๋‚˜์˜ ์˜๊ฒฌ</p>
                    </div>
                </div>
            </div>
            <div class="col">
                <div class="card h-100">
                    <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                        class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">์˜ํ™” ์ œ๋ชฉ</h5>
                        <p class="card-text">์ฝ”๋ฉ˜ํŠธ</p>
                        <p>โญโญโญ</p>
                        <p class="mycomment">๋‚˜์˜ ์˜๊ฒฌ</p>
                    </div>
                </div>
            </div>
            <div class="col">
                <div class="card h-100">
                    <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                        class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">์˜ํ™” ์ œ๋ชฉ</h5>
                        <p class="card-text">์ฝ”๋ฉ˜ํŠธ</p>
                        <p>โญโญโญ</p>
                        <p class="mycomment">๋‚˜์˜ ์˜๊ฒฌ</p>
                    </div>
                </div>
            </div>
            <div class="col">
                <div class="card h-100">
                    <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                        class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">์˜ํ™” ์ œ๋ชฉ</h5>
                        <p class="card-text">์ฝ”๋ฉ˜ํŠธ</p>
                        <p>โญโญโญ</p>
                        <p class="mycomment">๋‚˜์˜ ์˜๊ฒฌ</p>
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>

</html>

์œ„ ์ „์ฒด์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด CSS๋Š” HTML์˜ ๊ตฌ์„ฑ์š”์†Œ์ธ <head>์•ˆ์— <style>์ด๋ผ๋Š” ๊ณณ ์•ˆ์—์„œ ์ด๋ค„์ง€๊ณ  ์žˆ๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๋‚ด๊ฐ€ CSS๋ฅผ ์ด์šฉํ•ด์„œ ๋ฌด์–ธ๊ฐ€๋ฅผ ๊พธ๋ฐ€๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ???

 

1. ์šฐ์„  '์ง€์นญํ•  ๋Œ€์ƒ'์ด ํ•„์š”ํ•˜๋‹ค.

 

ํŽ˜์ด์ง€์˜ ์ œ๋ชฉ๊ณผ ๋‚ ์”จ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ๊ตฌ์—ญ(div)์„ ๋‚ด๊ฐ€ ๊พธ๋ฏธ๊ณ  ์‹ถ๋‹ค๋ฉด

div์˜†์— class="์•„๋ฌด๊ฐœ" ๋กœ ์ง€์นญ์„ ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

์˜ˆ์‹œ)

<div class="mytitle">
        <h1>๋‚ด ์ƒ์— ์ตœ๊ณ ์˜ ์˜ํ™”๋“ค</h1>
        <div>ํ˜„์žฌ ์„œ์šธ์˜ ๋‚ ์”จ : <span id="temp">20</span>๋„</div>
        <button onclick="hey()">์˜ํ™” ๊ธฐ๋ก ๋ฒ„ํŠผ</button>
        <!-- ์—ฌ๊ธฐ hey() ๋ฐœ๋™ ๋ฒ„ํŠผ์ด ์žˆ๋‹ค. -->
    </div>

 

๋Œ€์ƒ์„ ์ง€์นญํ–ˆ๋‹ค๋ฉด?

2. <head>์˜ <style>๋กœ ์˜ฌ๋ผ์™€ .mytitle๋กœ ๋Œ€์ƒ์„ ๊ฐ€๋ฆฌํ‚ค๊ณ  ๊พธ๋ฏธ๊ธฐ๋ฅผ ์‹œ์ž‘ํ•œ๋‹ค.

       <head>
        <style>
         .mytitle {
                    background-color: green;
                    color: white;

                    height: 250px;

                    /* linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)) <-- ๋ฐฐ๊ฒฝ ์–ด๋‘ก๊ฒŒ ํ•˜๊ธฐ*/
                    
                    background-image: linear-gradient(0deg, rgba(0, 0, 0, 0.5), rgba(0, 0, 0, 0.5)), url('https://movie-phinf.pstatic.net/20210715_95/1626338192428gTnJl_JPEG/movie_image.jpg');
                    background-position: center;
                    background-size: cover;

                    /* ๋‚ด์šฉ๋ฌผ์„ ์ •๋ ฌ์‹œํ‚ฌ๋•Œ๋Š” ๋ฐ‘์— 4์ค„์ด ํ•ญ์ƒ ๊ฐ™์ด ๋‹ค๋‹Œ๋‹ค. ๋”ฐ๋ผ์„œ, padding์„ ์“ธ ํ•„์š”๊ฐ€ ์—†๋‹ค. */

                    display: flex;
                    flex-direction: column; /* column ์„ธ๋กœ, row ๊ฐ€๋กœ */
                    align-items: center;
                    justify-content: center;
                }
        </style>
        </head>

์ง€์นญํ•œ ๋Œ€์ƒ์ด (๊พธ๋ฉฐ์ค˜์•ผ ํ•  ๋Œ€์ƒ์ด) div(๊ตฌ์—ญ) ์ด๋ผ๋ฉด ?

 

1. background-color ๋ถ€ํ„ฐ ๋ณ€๊ฒฝ

(๋ฐ•์Šค์˜ ๋ฒ”์œ„๋ฅผ ์•Œ๊ธฐ ์œ„ํ•จ)

 

2. ๊ทธ ํ›„์— ์ƒ‰๊น”๊ณผ ํฐํŠธ์‚ฌ์ด์ฆˆ, ๋†’์ด, ๋„“์ด ... ๋ณธ์ธ์ด ์›ํ•˜๋Š” ์ž‘์—…์„ ํ•ด ๋‚˜๊ฐ„๋‹ค.

 

์ฐธ๊ณ  : /*๋Š” ์ฃผ์„ (๊ฐœ๋ฐœ์ž์—๊ฒ ๋ณด์ด์ง€๋งŒ, ์ปดํ“จํ„ฐ์—์„œ๋Š” ๋ณด์ด์ง€ ์•Š๋Š” ๋ฉ”๋ชจ์žฅ ๊ฐ™์€ ๊ธฐ๋Šฅ์ด๋‹ค.)

๋‹จ์ถ•ํ‚ค : (Ctrl + / ), ๋ชจ์–‘์€ ๋ถ™๋Š” ๋‹จ๋ฝ๋งˆ๋‹ค ๋‹ค๋ฅด๊ธฐ์— ๋‹จ์ถ•ํ‚ค๋ฅผ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์ข‹๋‹ค.


๊ทธ๋ ‡๋‹ค๋ฉด ์›€์ง์ž„์„ ์ฃผ๋Š” JavaScript์˜ ๊ฒฝ์šฐ์—๋Š”?

 

์šฐ์„  JavaScript ๋ฅผ ์“ฐ๋Š”์ด์œ ๋Š”

HTML ์กฐ์ž‘ํ• ๋ ค๊ณ , ์™œ?

์›€์ง์ด๊ฒŒ ๋งŒ๋“ค๊ณ  ์‹ถ์œผ๋‹ˆ๊นŒ, ๊ทผ๋ฐ ์›€์ง์ž„์„ JavaScript๋กœ๋งŒ ์“ธ๋ ค๊ณ  ํ•˜๋ฉด ์กฐ๊ธˆ ๋ณต์žกํ•˜๋‹ค.

 

๊ทธ๋ž˜์„œ ์žˆ๋Š”๊ฒŒ jQuery !

<div class="mycards">
        <div id="cards" class="row row-cols-1 row-cols-md-4 g-4">
            <div class="col">
                <div class="card h-100">
                    <img src="https://movie-phinf.pstatic.net/20210728_221/1627440327667GyoYj_JPEG/movie_image.jpg"
                        class="card-img-top" alt="...">
                    <div class="card-body">
                        <h5 class="card-title">์˜ํ™” ์ œ๋ชฉ</h5>
                        <p class="card-text">์ฝ”๋ฉ˜ํŠธ</p>
                        <p>โญโญโญ</p>
                        <p class="mycomment">๋‚˜์˜ ์˜๊ฒฌ</p>
                    </div>
                </div>
            </div>

JavaScript์˜ ๊ฒฝ์šฐ์—๋Š”jQuery ๋ฅผ ์ด์šฉํ•ด์„œ id="์•„๋ฌด๊ฐœ"๋กœ ์ง€์นญ์„ ํ•˜๊ณ , $('#์•„๋ฌด๊ฐœ')๋กœ ๊ฐ€๋ฆฌํ‚จ๋‹ค.

$('#cards').append(temp_html)

๋‘˜์˜ ์ฐจ์ด์ ์„ ์•Œ์•„๋‘๋ฉด ์ฒ˜์Œ ์ฝ”๋”ฉ์„ ์‹œ์ž‘ํ•˜๋ฉด์„œ, ์ฝ”๋“œ ํ•ด์„ํ•˜๊ณ  ๋ถ„๋ฅ˜ํ•˜๋Š”๋ฐ ๋„์›€์ด ๋งŽ์ด ๋œ๋‹ค.

๊ตฌ๋ถ„ ์ง€์นญํ•  ๋•Œ ์ž‘์„ฑํ•˜๋Š” ๊ณณ ๊ฐ€๋ฆฌํ‚ฌ ๋•Œ
CSS class="๋ฟ…๋ฟ…๋ฟ…" <style> .๋ฟ…๋ฟ…๋ฟ…
JavaScript (jQuery) id="๋ฟก๋ฟก๋ฟก" <script> $('#๋ฟก๋ฟก๋ฟก')

 


์„œ๋ฒ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š”
Fetch

 fetch("http://spartacodingclub.shop/web/api/movie").then(res => res.json()).then(data => {
                let rows = data['movies']
                $('#cards').empty()
                rows.forEach((a)=>{
                    let title = a['title']
                    let comment = a['comment']
                    let desc = a['desc']
                    let star = a['star']
                    let image = a['image']
                    
                    let star_image = 'โญ'.repeat(star)
                    // ๋ณ„์  ๋ฐ˜๋ณต ํ•˜๋Š” ์ฝ”๋“œ ใ…Žใ…Ž

                    let temp_html = `<div class="col">
                                        <div class="card h-100">
                                            <img src="${image}"
                                                class="card-img-top" alt="...">
                                            <div class="card-body">
                                                <h5 class="card-title">${title}</h5>
                                                <p class="card-text">${desc}</p>
                                                <p>${star_image}</p>
                                                <p class="mycomment">${comment}</p>
                                            </div>
                                        </div>
                                    </div>`
                    $('#cards').append(temp_html)
                })
            })

์˜ค๋Š˜ ์ด๊ฑฐ ์ž‘์„ฑํ•˜๊ณ  ํ•ด์„ํ•˜๋Š”๋ฐ๋งŒ ์–ผ๋งˆ๋‚˜ ๊ฑธ๋ ธ๋Š”์ง€.....

 

Fetch๋ฅผ ์ด์šฉํ•˜๋ฉด ์„œ๋ฒ„๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ์‹น ๊ฐ€์ง€๊ณ  ์™€์„œ 
์ฝ”๋“œ์—์„œ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

Fetch ๊ณจ๊ฒฉ ์˜ˆ์‹œ)

fetch("์—ฌ๊ธฐ์— URL์„ ์ž…๋ ฅ").then(res => res.json()).then(data => {
    console.log(data)
    })

ํ•ด์„ : fetch๋Š” "์ž…๋ ฅํ•œ URL"๋กœ๋ถ€ํ„ฐ ์ •๋ณด๋ฅผ ๋ฐ›์•„์˜ค๋Š”๋ฐ,

res(=result๋ž‘ ๊ฐ™์€ ๋ง)๋ฅผ jsonํ˜•ํƒœ๋กœ ๊ฐ€์ ธ์˜ฌ๊ฑฐ์•ผ,

๊ทธ๋ฆฌ๊ณ  ์šฐ๋ฆฐ ๊ทธ data๋ฅผ {}๋งŒํผ ํ™œ์šฉํ• ๊ฑด๋ฐ,

{}์— ๋ญ์žˆ์–ด?? console.log(data) !!

 

์•„~ "์ž…๋ ฅํ•œ URL"๋กœ๋ถ€ํ„ฐ jsonํ˜•ํƒœ๋กœ ๋ฐ›์•„์˜จ data๋ฅผ console.log(data)๋กœ ์ฐ์–ด๋ณธ๋‹ค๋Š” ์†Œ๋ฆฌ๊ตฌ๋‚˜~

๋ผ๊ณ  ํ•ด์„ํ•˜๋Š” ์ˆœ๊ฐ„ ๋‚ด๊ฐ€ fetch์ฝ”๋“œ๋ฅผ ์ ์œผ๋ฉด์„œ ์ฝ”๋”ฉ์ด ๋ณด๋‹ค ํŽธํ•ด์กŒ๋‹ค๋Š”๊ฑธ ๊นจ๋‹ฌ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

์•„ํ•˜~ ๊ทธ๋ž˜์„œ jsonํ˜•ํƒœ๋กœ ๋ฐ›์•„์˜ค๋‹ˆ๊นŒ ์šฐ๋ฆฌ๋Š” ๊ทธ๊ฑธ ๋‚˜์—ดํ•˜๊ณ  ์‹ถ์„ ๊ฑฐ๊ณ  !

์•„ ๊ทธ๋Ÿฌ๋ฉด forEach๊ฐ€ ์˜ค๊ฒ ๊ตฌ๋‚˜~

๊ทธ๋Ÿฌ๋ฉด forEach์•ž์— ๋ณ€์ˆ˜๊ฐ€ ๋“ค์–ด๊ฐ€๋‹ˆ๊นŒ

๋ฐ›์•„์˜จ data์˜ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ณ€์ˆ˜๋กœ ์žก๊ณ ,

์šฐ๋ฆฌ๊ฐ€ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์™์™์™ ๊ฐ–๋‹ค ๋ถ™์ด๋ฉด ๋˜๊ฒ ๋„ค??

 

๋‚ด๊ฐ€ ํ•„์š”ํ•œ๊ฑด 1.์˜ํ™”์ œ๋ชฉ, 2.๊ฐ์ƒํ‰, 3.๋‚˜์˜ ์˜๊ฒฌ, 4.๋ณ„์ , 5.ํฌ์Šคํ„ฐ์‚ฌ์ง„ ์ด๋‹ˆ๊นŒ

๊ณ ๊ฒƒ๋งŒ ์™์™ ๋นผ์™€์„œ temp_html๋งŒ๋“ค๊ณ  ๊ทธ๊ฑธ append๋กœ ๋ถ™์—ฌ์ฃผ๋ฉด ๋˜๊ฒ ๊ตฌ๋‚˜~?

fetch("http://spartacodingclub.shop/web/api/movie").then(res => res.json()).then(data => {
                let rows = data['movies']
                $('#cards').empty()
                rows.forEach((a)=>{
                    let title = a['title']
                    let comment = a['comment']
                    let desc = a['desc']
                    let star = a['star']
                    let image = a['image']
                    
                    let star_image = 'โญ'.repeat(star)
                    // ๋ณ„์  ๋ฐ˜๋ณต ํ•˜๋Š” ์ฝ”๋“œ ใ…Žใ…Ž

                    let temp_html = `<div class="col">
                                        <div class="card h-100">
                                            <img src="${image}"
                                                class="card-img-top" alt="...">
                                            <div class="card-body">
                                                <h5 class="card-title">${title}</h5>
                                                <p class="card-text">${desc}</p>
                                                <p>${star_image}</p>
                                                <p class="mycomment">${comment}</p>
                                            </div>
                                        </div>
                                    </div>`
                    $('#cards').append(temp_html)

์˜ค๋Š˜์€  Fetch์™€  jQuery , ๋ณ€์ˆ˜ ๋งŒ๋“ค๊ธฐ , ํ•ด์„ํ•˜๊ธฐ,

์š”๊ตฌ์‚ฌํ•ญ์„ ๋ณด๊ณ  ๋‚˜ ์Šค์Šค๋กœ ๋จผ์ € ์ฝ”๋”ฉํ•ด๋ณด๊ธฐ๋ฅผ ๊ฐ€์žฅ ์ค‘์ ์ ์œผ๋กœ ํ•˜๋ฉด์„œ

์–ด์ œ๋ณด๋‹ค ๋” ํฅ๋ฏธ๋ฅผ ๊ฐ€์ง€๊ฒŒ ๋œ ๊ฒƒ ๊ฐ™๋‹ค.

 

์–ต์ง€๋กœ ๋จธ๋ฆฟ์†์— ์ง‘์–ด๋„ฃ์—ˆ๋˜ ๋ถ€๋ถ„์„ ์ด์ œ์„œ์•ผ ์ฒ˜์Œ ์ดํ•ด๋ฅผ ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋‹ˆ

์ด์ œ ๋ง‰ ์ฝ”๋”ฉ์˜ ์„ธ๊ณ„์— ๋ฐœ์„ ๋“ค์—ฌ๋†“์€ ๋‚˜ ์ด์ง€๋งŒ

๋„ˆ๋ฌด๋‚˜๋„ ์ƒˆ๋กญ๊ณ  ์žฌ๋ฐŒ๋‹ค ใ…Žใ…Ž

 

์•„๋ฌดํŠผ ๋ชฐ๋ผ๋„ ์ฒœ์ฒœํžˆ

๋А๋ ค๋„ ๊พธ์ค€ํ•˜๊ฒŒ

๊ทธ๋ ‡๊ฒŒ ๋‚˜์•„๊ฐ€๊ณ ์ž ํ•œ๋‹ค.

 

Good bye

 

' ใ…  '

https://yooonzero.github.io/mypage/