본문 바로가기
WEB/Vue.js

[Vue] Vue.js란

by 댕꼬 2022. 5. 3.
728x90

Vue.js


Vue.js

  •  Evan You에 의해 만들어짐
  • 사용자 인터페이스를 만들기 위해 사용하는 오픈 소스 progressive Framework

 

 

Vue.js특징

- Approachable (접근성)

- Versatile (유연성)

- Performant (고성능)

 

 

MVVM Pattern

  • Model + View + ViewModel
  • Model : 순수 자바스크립트 객체
  • View : 웹페이지의 DOM
  • ViewModel : Vue의 역할

기존에는 자바스크립트로 view에 해당하는 DOM에 접근하거나 수정하기 위해 JQuery와 같은 라이브러리를 이용하였으나, Vue는 view와 Model을 연결하고 자동으로 바인딩하므로 양방향 통신을 가능하게 한다.

 

실습 1 : Hello VueJS 출력하기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
    <h2>{{message}}</h2>
</div>
<script>
    new Vue({
        el: "#app",         //엘리먼트 : app이라는 아이디에 연결
        // data:{
        //     message: "안녕 VuewJS!!"  
        // }
        data() {
            return {
                message:"Hello VueJs~~~"
            }
        },
    })
</script>

    
</body>
</html>

실습1의 출력화면

 

 

Vue Instance

속성 설명
el Vue가 적용될 요소 지정. CSS Selector 또는 HTML Element
data Vue에 사용되는 정보 저장. 객체 또는 함수의 형태 
template 화면에 표시할 HTML, CSS등의 마크업 요소를 정의하는  속성.
뷰의 데이터 및 기타 속성들도 함께 화면에 그릴 수 있음
methods 화면 로직  제어와 관계된 method를 정의하는 속성. 마우스  클릭 이벤트 처리와 같이
화면의 전반적인 이벤트와 화면 동작과 관련된 로직 추가
created 뷰 인스턴스가 생성되자마자 실행할 로직을 정의 (라이프 사이클)

 

Vue LifeCycle

: 라이프사이클은 크게 나누면 Instance의 생성, 화면부착, 데이터갱신, 소멸의 4단계로 나뉜다.

LifeCycle 속성 설명
beforeCreate Vue Instance가  생성되고 각 정보의 설정 전에 호출. DOM과 같은 화면요소에 접근 불가
created Vue Instance가 생성된 후 데이터들의  설정이 완료된 후 호출.
Instance가 화면에 부착하기 전이기 때문에 template속성에 정의된 DOM 요소는 접근 불가
서버에 데이터를   요청(http통신)하여 받아오는 로직을 수행하기 좋다
beforeMount 마운트가 시작되기전에 호출
mounted 지정된 element에 Vue Instance 데이터가 마운트 된 후에 호출
template 속성에 정의한 화면 요소에 접근할 수 있어 화면 요소를 제어하는 로직 수행
beforeUpdate 데이터가 변경될 때 virtual DOM이 랜더링, 패치 되기 전에  호출
updated Vue에서 관리되는 데이터가 변경되어 DOM에 업데이트가 된 상태
데이터 변경 후 화면 요소 제어와 관련된 로직을  추가
beforeDestroy Vue Instance가 제거되기 전에 호출
destroyed Vue Instance가 제거된 후에 호출

 

실습 2 : Vue LifeCycle 출력하기

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
<div id="app">
    <h2>클릭카운트 : {{count}}</h2>
    <button @click="count++"> 카운트 증가</button>
</div>
<script>
    new Vue({
        el: "#app",         
        data() {
            return {
                count:0,
            };
        },
        beforeCreate() {
            console.log("beforeCreate호출!!!");
            console.log("beforeCreate count : "+this.count);
        },
        created() {
            console.log("created호출!!!");
            console.log("Create count : "+this.count);
            console.log("created el : ",this.$el);
        },
        beforeMount() {
            console.log("beforeMount호출!!!");
            console.log("beforeMount count : "+this.count);
        },
        mounted() {
            console.log("mounted호출!!!");
            console.log("mounted count : "+this.count);
            console.log("mounted el : ",this.$el);
        },
        updated() {
            console.log("updated호출!!!");
        },destroyed() {
            console.log("destroyed호출!!!");
        },
    
    })
</script>

    
</body>
</html>

실습2의 실행화면

-> beforeCreate에서는 아직 연결되지 않았기 때문에 count를 받아올 수 없다.

-> create에서는 아직 el구문을 호출할 수 없는것을 확인할 수 있다. 

728x90

'WEB > Vue.js' 카테고리의 다른 글

[Vue] Axios  (0) 2022.05.11
[Vue] Vue Component  (0) 2022.05.10
[Vue] Vue event  (0) 2022.05.10
[Vue] Vue Instance  (0) 2022.05.10
[Vue] Vue Directive  (0) 2022.05.04

댓글