상세 컨텐츠

본문 제목

[SI에서 살아남기] 내맘대로 예시와 함께 공부하는 Vue.js [1] (export ,data,methods,computed,watch)

SI에서 살아남기/Vue.js

by 주관적인 2020. 5. 10. 12:15

본문

Vue.js란?

  • 사용자 관점의 인터페이스를 만들기 위한 프레임워크 이다.
  • Vue.js를 사용하게 되면 편리하게 구문을 이용하여 DOM에서의 데이터를 추가/변경/삭제 할 수 있다.

학습 방법: 정의 -> 예시 -> 설명

*export default{}

  • ES6의 모듈 문법으로 다른 곳에서 한 객체나 메서드,데이터를 사용하고자 할때 쓸 수 있는 것입니다.

Example) 

// A.js
<script>
	export default{}
</script>

// main.vue
<script>
	import A from 'A';
</script>

export 내에 있는 데이터를  import 하여 사용 할 수 있음. 

 

 

 

*data()

  • 원하는 변수와 원하는 값을 마치 Java 맵타입처럼 저장 할 수 있음.

Example)

//A.js
<script>
  export default{
    data(){
      return{
        abc: "wow",
        isAbc: "true"
    }
  }
</script>

// main.vue
<template>
  <div v-if="isAbc">
    {{abc}}
  </div>
</template>

<script>
	import A from 'A'
</script>

실행 결과

wow

 

A.js => data()를 설정함. 변수 abc,isAbc

main.vue => 

{{abc}} = A.js에서 data()내에 있는 abc 값을 dom객체에 전달한다.

v-if = if문처럼 isAbc가 true일 때만 실행 (예제는 실행 됨.)

 

※ data()에 Key들은 v-if,{{},v-model 등의 방식으로 사용 가능하다. 하지만 저는 model을 모릅니다.. Soorrrryyy

data function(){return} 도 가능하고 data()=>{return}도 가능하지만 화살표는 사용하는걸 this 방식을 사용 할 수 없ㄱ기때문에 사용하지 않는다.(제가 적었던 방식은 ES6 문법에서 function을 생략해도 인식해준다.)

 

 

 

 

*methods{ function(){ } }

  • 원하는 이벤트 처리나 데이터 변경 등 메서드 선언
//A.js
<script>
  export default{
    data(){
      return{
        abc: "wow",
        isAbc: "true"
      },
    methods:{
      changeAbc(){
          this.isAbc="false";
      }
    }
  }
</script>

// main.vue
<template>
  <button v-on:click="changAbc">버튼</button>
  <div v-if="isabc">
      {{abc}}
  </div>
</template>
<script>
	import A from 'A'
</script>

실행 결과

[버튼]   => 클릭시 <div></div> 사라짐

wow

 

A.js => methods에 원하는 이름의 메서드 선언

main.vue => methods를 버튼 v-on:click에서 사용, 버튼 클릭시 메서드 실행

 

※버튼 내에 v-on:click 이외의 이벤트들은 vue.js Api 참조 하세욤 v-on Api 보기

 

 

 

*computed

  • 선언형 프로그래밍 방식( 리턴으로 무엇을 나타낼지 선언하는 방식)
  • 원하는 메서드나 이벤트 등을 선언함.
//A.js
<script>
  export default{
    data(){
      return{
        abc: "wow",
        isAbc: "true"
      },
    methods:{
      changeAbc(){
          this.isAbc="false";
      }
    },
    computed:{
      getAbc(){
          if(this.abc==="wow"){
              return "LoL";
          }
      }
    }
  }
</script>

// main.vue
<template>
  <button v-on:click="changAbc">버튼</button>
  <div v-if="isabc">
      {{abc}}
      {{getAbc}}
  </div>
</template>
<script>
	import A from 'A';
</script>

실행 결과

[버튼] => 클릭시 <div></div> 사라짐

wow

LoL

 

A.js => computed에 원하는 이름의 메서드 선언

main.vue => {{getAbc}}를 사용하여 computed 의 getAbc()의 리턴 값을 가져옴.

 

@computed vs methods

computed

  • 한번쓴 계산값을 캐시에 저장하여 계속 가져온다.
  • return 반드시있어야함
  • 사용방법 {{ 변수명 }}

methods

  • 사용 할 때 마다 실행하여 값을 가져온다.
  • 사용방법 {{ 변수명() }}

예를 들어 Data.now()라는 메서드를 쓸 경우 명확히 차이를 알 수 있다.

Data.now()가 사용된 method와 computed의 변수를 태그 내에 반복적으로 사용 할 경우 

method는 값이 계속 바뀌지만 computed는 처음에 실행 했던 값만 가져온다.

 

즉) 같은 페이지 내에서 같은 연산을 여러번 해야 한다면 computed 사용을 권장한다.

 

*watch

  • vue 인스턴스의 특정 프로퍼티가 변경될때 지정한 함수가 실행되는 것임
  • 특히나 비동기 계산, 복잡한 계산을 하고자 할때 watch를 사용한다.
  • 명령형 프로그래밍 방식( 데이터가 바뀌면 특정 함수를 실행하는 방식)
  •  (예제는 생략하겠습니다. 공부 후 추후 삽입 할 예정) 

 

 

본 글은 다소 주관적인 생각들을 포함하고 있어, 잘못된 정보를 제공할 수도 있습니다. 부족한 점이 있으면 댓글 남겨주세요. 추가 및 수정 하도록 하겠습니다. 감사합니다.

 

 

관련글 더보기

댓글 영역