FE/Vue.js

[Vue.js] Vue.js 기본 문법

멍목 2023. 5. 22. 01:03
반응형

SFC 구조( .vue 파일 구조)

.vue 파일의 구조는 기본적으로 <script>, <style>, <template> 3가지로 구성되어 있다.

 

<script>

  • .vue 파일에 하나만 포함될 수 있고, 스크립트 영역이며 ES 모듈로 실행된다.
  • <script> 영역에서 사용되는 하위 영역들은 아래와 같다.
영역 이름 설명
data() - data() 영역에서 정의된 변수들은 반응적인 상태가 되어, 'this'에 노출된다.

- 반응적인 상태 : 해당 변수들이 수정되면, 자동으로 재랜더링되어 화면이 갱신된다.

- 'this' : <script>에서 data()영역의 변수를 꺼내쓰려면, this를 이용해서 꺼내야 한다.
methods - methods는 변수 값을 변경하고, 업데이트할 수 있는 함수를 정의하는 영역이다.

- <template> 에서는 event Listener로 사용될 수 있다.
mounted() - mounted() 영역에서는 생명주기 훅을 정의하는 곳이다.

- 즉, 컴포넌트가 호출된 후 호출되는 영역이다.
computed() - 미리 정의된 계산식을 이용한 후 반응적으로 반환하는 기능을 정의하는 영역이다.
watch - 특정 변수가 수정될 때마다 특정 함수가 작동되도록 하는 영역이다. 
  (Observer 패턴과 유사)
components - 다른 컴포넌트를 가져와서 사용할 수 있는 영역이다.

- components 영역에서 사용하기 전에 미리, import를 해둬야 한다.
props - 부모 컴포넌트로 받는 데이터를 정의하는 영역이다.
emits & created() - 자식 컴포넌트가 부모 컴포넌트에게 보낼 이벤트를 정의하는 영역이다.

- emits 로 이벤트를 선언하고, created() 에서 이벤트를 정의한다.

 

 

<template>

  • .vue 파일에 하나만 포함될 수 있고, 실제로 보여지는 영역이다.
  • <script> data()영역에서 정의한 변수를 사용하려면 중괄호 2개를 이용해야 한다.
    이 때, 변수는 텍스트 형식으로 대입된다. ex) {{ msg }}
  • template에서 사용되는 디렉티브로는 아래와 같다.
디렉티브 이름 설명
v-bind - HTML 요소의 속성과 data()의 변수를 연결한다.
  ex 1) <div v-bind:id="dynamicId"></div>
  ex 2) <div :id="dynamicId"></div>
v-on - HTML 요소의 이벤트 리스너를 정의할 때 사용한다.
  ex 1) <button v-on:click="increment">{{cnt}}</button>
  ex 2) <button @click="increment>{{cnt}}</button>

- 위 예시 중 increment는 <script>의 methods 에서 정의한 함수이다.
v-model - HTML 입력 요소와 data()의 변수를 양방향 매핑할 때 사용한다.

- HTML 입력 요소에 입력 시, data()의 변수도 자동으로 update가 되며,
  반대로 data()의 변수가 변경되면 HTML 입력 요소도 자동으로 update가 된다.
  ex) <input v-model="name" />
v-if / v-else-if / v-else - HTML 요소를 조건에 따라 렌더링할 때 사용한다.

- 조건이 참일 때만 랜더링하며, 거짓일 때는 랜더링하지 않는다.
  ex) 
  <h1 v-if="isTrue">진실</h1>
  <h1 v-else>거짓</h1>
v-for - data()의 변수 배열을 반복하여, HTML 랜더링할 때 사용한다.
  ex) 
  <ul>
      <li v-for="p in persons" :key="p.id">
          {{ p.name}}
      </li>
  </ul>

- 자료 배열을 update하는 방법
  1) 변경 메서드를 호출(copyWithin, fill, pop, push, reverse, shift, sort, splice, unshift)
  2) 배열 자체를 교체
v-show - v-if 처럼, 조건이 거짓이라면 요소를 보여주지 않는다.
- v-if 는 HTML 요소 자체를 삭제하지만, v-show는 css로 display:none을 줘서 안보이게 한다.

 

<style>

  • .vue 파일에 여러 개가 포함될 수 있고, 스타일을 정의하는 영역이다.

 

 

https://v3-docs.vuejs-korea.org/tutorial/#step-1

 

Tutorial | Vue.js

 

v3-docs.vuejs-korea.org

 

반응형