IT/development

[Vue.js] ๋ทฐ ๋””๋ ‰ํ‹ฐ๋ธŒ(v-๋กœ ์‹œ์ž‘ํ•˜๋Š” ์†์„ฑ๋“ค์„ ์˜๋ฏธ)

์•Œ ์ˆ˜ ์—†๋Š” ์‚ฌ์šฉ์ž 2023. 7. 27.

๋ชฉ์ฐจ

    v-bind(:์ฝœ๋ก  ๋ฐ”์ธ๋”ฉ์œผ๋กœ ์ค„์ž„ ๊ฐ€๋Šฅ)

    <!-- ๋‚˜๋จธ์ง€ ์ƒ๋žต -->
    <style>
        .text-blue { color: chocolate; }
    </style>
    
    <div id="app">
        <!-- pํƒœ๊ทธ์— id, class, value๊ฐ’์„ ๋ทฐ ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ ์†์„ฑ์˜ ๊ฐ’์œผ๋กœ ๋ฐ”์ธ๋”ฉ -->
        <p v-bind:id="uuid" v-bind:class="textBlue" v-bind:value="empNm">
    		<!-- v-bind:์†์„ฑ์„ :์†์„ฑ์œผ๋กœ ์ค„์ผ ์ˆ˜๋„ ์žˆ์Œ(์œ„์™€ ๋™์ผํ•œ ์ž‘์—… ์ˆ˜ํ–‰) -->
    	  <p :id="uuid" :class="textBlue" :value="empNm">       
            {{ num }}
        </p>
    
    </div>
    <script>
        new Vue({
            el: '#app',
            data: { 
                num: 10,
                //uuid๋Š” ๋กœ์ง์— ์˜ํ•ด ์ƒ์„ฑ๋œ ๋ฐ์ดํ„ฐ๋ผ๋Š” ๊ฐ€์ •
                uuid: 'abcd12345678',
                textBlue: 'text-blue',
                empNm: '์•„์ด์–ธ๋งจ'
            }
        })
    </script>

    ๊ฒฐ๊ณผ

    v-if(์กฐ๊ฑด๋ฌธ)

    <div id="app">
        <p v-if="auth === '๊ด€๋ฆฌ์ž'">
            ๊ด€๋ฆฌ์ž
        </p>
        <p v-else-if="auth === '์‚ฌ์šฉ์ž'">
            ์‚ฌ์šฉ์ž
        </p>
        <p v-else>
            ๊ทธ ์™ธ
        </p>
    
    </div>
    new Vue({
        el: '#app',
        data: { 
            auth: '๊ด€๋ฆฌ์ž',
        }
    })

    ๊ฒฐ๊ณผ

    ๊ฐœ๋ฐœ์ž vue๋„๊ตฌ์—์„œ data ๋ณ€๊ฒฝ ์‹œ ๋ฐ์ดํ„ฐ๋„ ๋ณ€๊ฒฝ๋จ

    v-show(show, hide)

    <div id="app">
        <p v-if="auth === '๊ด€๋ฆฌ์ž'">
            ๊ด€๋ฆฌ์ž
        </p>
        <p v-else-if="auth === '์‚ฌ์šฉ์ž'">
            ์‚ฌ์šฉ์ž
        </p>
        <p v-else>
            ๊ทธ ์™ธ
        </p>
    		
    		<div v-show="auth === '๊ด€๋ฆฌ์ž' ">
                ๊ด€๋ฆฌ์ž
    		</div>
    
    </div>
    js์ฝ”๋“œ๋Š” ์œ„์™€ ๋™์ผ

    ๊ฒฐ๊ณผ

    v-model(:์ฝœ๋ก  ๋ฐ”์ธ๋”ฉ์œผ๋กœ ์ค„์ž„ ๊ฐ€๋Šฅ)(๋ฐ์ดํ„ฐ ๋™๊ธฐํ™”)

    <div id="app">
        <!--์‚ฌ์šฉ์ž๊ฐ€ ์ž…๋ ฅํ•œ ๊ฐ’์„ ์•„๋ž˜ pํƒœ๊ทธ์— ์ถœ๋ ฅํ•˜๋Š” ์š”๊ตฌ์‚ฌํ•ญ ์ด๋ผ๋Š” ๊ฐ€์ •-->
        <input type="text" v-model="userName">
        <p id="userName">{{ userName }}</p>
    </div>
    new Vue({
        el: '#app',
        data: {     
            userName: '',
        }
    })
    
    //์•„๋ž˜์ฒ˜๋Ÿผ javascript๋‚˜ jQuery๋ฅผ ์‚ฌ์šฉํ•ด์„œ dom์— ์ ‘๊ทผํ•ด์„œ ๋ณ€๊ฒฝํ•  ํ•„์š”๊ฐ€ ์—†์Œ
    //let userName = $("#userName").val();
    //let userName = document.getElementById("userName");
    //... ๋‚˜๋จธ์ง€ ๋กœ์ง ์ƒ๋žต

    ๊ฒฐ๊ณผ

    v-on:click(@click๋กœ ์ค„์ผ ์ˆ˜ ์žˆ์Œ)

    <div id="app">
        <button @click="test">click me</button>
    </div>
    new Vue({
        el: '#app',
        methods: {
            test: function() {
                alert("ํด๋ฆญ ํ–ˆ๋„ค?");
            }
        },
    })

    ๊ฒฐ๊ณผ

    ๋ชจ๋””ํŒŒ์ด์–ด๋กœ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๋ถ€์—ฌ ๊ฐ€๋Šฅ

    <!-- @click.๋ชจ๋””ํŒŒ์ด์–ด๋กœ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ ๋ถ€์—ฌ ๊ฐ€๋Šฅ(์•„๋ž˜ ์ฝ”๋“œ๋Š” ๋ฒ„ํŠผ ๊ธฐ๋ณธ๋™์ž‘ ๋ง‰๋Š” ์ฝ”๋“œ) -->
    <button type="button" class="btn" @click.prevent="search">๊ฒ€์ƒ‰</button>
    
    <!-- script์˜ e.preventDefault()์™€ ๋™์ผํ•œ ๊ธฐ๋Šฅ ์ˆ˜ํ–‰ -->

    ๋Œ“๊ธ€