Vue

4 분 소요

Vue

  • Vue의 핵심은 간단한 템플릿 구문을 사용해 선언적으로 DOM에 데이터를 랜더링 하는것
<div id="app">
    <p></p>
</div>
<script>
    new Vue({ //새로운 Vue 를 선언
        // 어떤 요소에 적용할지 정함, 여기서는 HTML 코드에 선언된 id="app"인 div 태그를 지정하였음.
        el: "#app",
        // data 는 해당 VueJS 에서 사용할 정보들을 선언해주는 역할
        data() {
                message : "data 값 출력"
        }, 
    });
</script>

new Vue({})

  • Vue를 선언하고 정의해주는 역할
    • 화면에 랜더링 되는 HTML 코드들을 컨트롤 하는것
    • HTML 안에 미리 약속된 언어로 자리를 만들어두면 해당 부분을 반응형으로 만들어 작업할 수 있도록 해주는것.
      • 정적인 웹페이지를 동적으로 운영 시 서버와 통신하며 여러 동작들을 처리 시 사용

el

  • Vue 가 새롭게 정의될 때, 해당 Vue 가 적용될 요소를 지정하는 역할
    • 위의 코드에서는 #app을 선택하여 HTML 중 id 가 “app” 인 div 태그를 선택

data

  • Vue는 여러 속성(property)를 가지는데 그중 data 는 Vue 에서 사용할 정보를 저장하는 곳으로, Object 형태로 정보를 가짐
    • message 라는 변수를 만들어 “안녕” 이란 값을 넣어줌.
    • Vue 는 변수에 담겨진 값을 들고 message 값이 필요한곳이 어딘지 찾아다님.

####

  • data 안에 저장된 값이 에 들어가라고 지정해둠.
    • 이 기호안에 Vue 에서 선언된 속성 내의 변수나 함수등을 호출하여 사용 가능
    • data.message 값으로 지정된 값이 p태그 안에 들어가 출력됨.

반응형 data

  • Vue 내의 정보와 DOM 이 연결되어 모든것이 반응형으로 작동하게 해줌.

VueJs 함수 저장소 (VusJS Methods)

  • Vue 의 정보들을 저장하는 저장소가 data 라면 함수들을 저장하고있는곳이 Methods 임.
<p></p> //메소드 호출

methods: { // 메소드 옵션 사용
    howAreYou:function(){  //메소드 선언
        return "howAreYou 메소드값 출력" //메소드 값 리턴
    }
},

Vue 내에서 Vue 를 칭하는 단어, this

  • data 안에 저장된 값을 this로 통해 사용가능함.
<p></p>

<script>
    new Vue({
        // 어떤 요소에 적용할지 정함, 여기서는 HTML 코드에 선언된 id="app"인 div 태그를 지정하였음.
        el: "#app",
        // data 는 해당 VueJS 에서 사용할 정보들을 선언해주는 역할
        data: {
        message : "DATA 값 출력" 
        },
        methods: {
            howAreYou:function(){
                return "howAreYou 메소드 출력"
            },
            sendMessage:function(){
            return this.message; //data 에 저장되어있는 message 데이터 가져옴.
            }
        },
    });
</script>
  • 여기서 this 는 Vue 를 가르키는 키워드임.
    • this.message 는 Vue 에 정의된 message 이라는 값을 가져오라는 뜻

HTML 속엇에 접근 v-bind (VueJS Dircetive)

  • HTML의 속성에는 를 사용할 수 없음.
    • HTML 속성값을 Vue 내에 선언된 값으로 변경 하고 싶을 경우 v-bind 디렉티브 를 사용해야함.

디렉티브 Directive

  • 디렉티브란 HTML 태그 안에 들어가는 속성의 역할을 하며, ‘v-‘ 라는 접두사가 붙는게 특징

html 속성에 접근하는 v-bind

//전체 문법
<a v-bind:href="link">링크</a> // v-bind 추가

//약어
<a :href="link">링크</a> //v-bind  :  줄여쓸수 있음.

data: {
    link: "https://www.google.com" //data 속성에 link 추가하여 데이터 추가
},

약어

v-bind 약어

  • v-bind:href=”link” 를 줄여 :href=”link” 로 표기 가능함. v-on 약어
  • v-on:click=”event” 를 줄여 @click=”event” 로 표기 가능함.

일회성 디렉티브 v-once

    <div id="app">
        <p v-once></p> // 출력 : 안녕 VUE.js
        <p></p>  // 출력 : 그래 안녕
    </div>

new Vue ({
 el: "#app",
 data: {
    message : "안녕 VUE.js", // 데이터 첫 값 설정
 },
 methods: {
     sendMessage:function(){
        this.message = '그래 안녕'  //this 사용해서 message 값변경
        return this.message;        //message 값 가져옴.
     }
 },
});
  • v-once 디렉티브는 HTML 코드로 출력된 이후에 어떤 처리가 있더라도 처음에 출력한 값을 유지시킬때 사용

HTML 코드를 직접 template 에 넣어주는 v-html

  • v-html 은 HTML 코드를 직접적으로 입력해줄 때 사용되는 디렉티브
<div id="app">
    <p v-html="link"></p> // v-html 사용
</div>

new Vue({ // Vue 선언
    el: "#app",
    data: {
        //html 에서 사용할 HTML 문법 사용
        link: "<a href='https://www.naver.com'>링크</a>" 
    }
});

이벤트 리스너 v-on

v-on 디렉티브를 사용하여 DOM 이벤트를 듣고 트리거 될 때 javascript를 실행할 수 있음.-공식문서

  • v-on 은 이벤트 리스너의 역할을 함.
    • 로그인 페이지 > id, pw 입력 후 로그인 시 로그인 됨 (로그은 버튼 클릭 시 입력된 id,pw 가 맞는지 검사하는 이벤트 발생되었다고 생각하면 됨.)
    • 로그인 버튼은 자신이 클릭되는 순간 이 로그인 이벤트를 실행시키게 됨.
    • 이벤트 실행하기 위한 트리거(여기선 로그인버튼 클릭) 와 이벤트를 연결해 주는것이 이벤트 리스너
<div id="app">

<button v-on:click="RandomNumber">주사위 던지기</button> //v-on 디렉티브 사용
</div>

new Vue({
    el: "#app",
    data:{
        number: 0 //주사위 숫자 저장할 변수
    },
    methods:{
        RandomNumber : function(){
            let i = Math.floor(Math.random() * (6)) + 1;
            this.number = i; //data의 number 값에 난수 대입
        }
    }
});
  • v-on:이벤트이름="methodName" (v-on 디렉티브 구조)

함수에 인자 받기

  • v-on 디렉티브를 통해 함수를 실행 시 함수 자체의 event-object뿐만 아니라
    • 우리가 임의로 생성한 값도 인수로 받아 함수에서 인자로 사용 가능
<div id="app">
    8
    <button  v-on:click="addCount(number(인자) 값 대입)">더하기</button>
</div>

new Vue({
    el: "#app",
    data:{
        count:0
    },
    methods:{
        addCount(number){
            this.count = this.count + number;
        }
    }
});

다양한 이벤트

v-on:dblclick="함수"
v-on:mousemove="함수"
v-on:이벤트이름.이벤트 수식어="함수이름"
v-on:keyup.키값="함수이름"
  • Event Modifier
    • 이벤트 호출 시 이벤트를 세밀하게 조정하는 Event Modifier 가 있음.
  • 마우스뿐만 아니라 키보드로도 이벤트를 발생시킬수 있음.
v-on:keyup.키값="함수이름"
new Vue({
    el: "#app",
    methods:{
        alert(){
            alert('로그인')
        }
   } 
});

템플릿에 직접 javaScript 코드 넣기

  • methods 객체를 사용하지않고 직접 javascript 코드를 넣는방법
    <div id="app">
        <p>8</p> 
        <p>8</p>
        <p>8</p>
    <button v-on:click="count++" >클릭</button> // 디렉티브 사용하여 클릭시 count  올라가는 버튼 만듬
    </div>
new Vue({ //새로운 Vue 객체생성
    el: "#app",  //id 값이 app인 html 코드
    data :{
       count : 0
   } 
});

계산된 속성 computed

  • 템플릿 내의 표현식은 단순한 연산에만 사용이 가능함.
    • 복잡한 계산식을 계산 후 값을 return 해주는 계산된 속성 이라는 computed
<div id="app">
    <p></p>
    <button v-on:click="count++" >클릭</button>
</div>

new Vue({
    el:"#app",
    data:{
        count:0
    },
    computed:{
        isReturn : function(){
            return this.count * 3 > 10 ? "10보다 큽니다" : "10보다 작습니다";
        }
    }
});

computed 와 methods 차이점

    <div id="app">
        <p>count : 8</p>
        <p>scount : </p>
        <p>isReturn : </p>
        <p>isReturnS : </p>
    <button v-on:click="count++" >클릭</button>
    <button v-on:click="scount++">클릭</button>
    </div>
new Vue({
    el:"#app",
    data:{
        count:0,
        scount:0
    },
    computed:{
        isReturn : function(){
            console.log("Computed");
            return this.count *2
        }
    },
    methods:{
        isReturnS : function(){
            console.log("methods");
            return this.count*3
        }
    }
});
  • 사용 방법, 형태는 동일함.
    • computed 는 count 값만 참조해서 실행함.
    • methods 는 count, scount 모두 참조해 재실행함.

카테고리:

업데이트: