• script부분 구조
    • <script>
      import '??' from '??'
      
      export default {
      	name : '???',
          data() {
          	return {
              	?? : ??
              }
          },
          methods : {
          	??() {
              	??
              }
          },
          components : {
          	??,
          },
          LifeCycleHook...
      }
      </script>
  • 데이터 바인딩
    • 데이터 보관함
    • <script>
      export default {
      	name : 'App',
          data() {
          	return {
              	testData : 10,
                  mainColor : 'color : red'
              }
          }
      }
      </script>
    • 데이터 사용
    • <h1 :style="mainColor">{{testData}}</h1>
  • 반복문
    • <div v-for="i in data" :key="i"></div>
    • 자바스크립트 for...in 문과 같으며 i부분에 변수를 두개까지 할당 가능
    • 변수 두개 할당시 첫번째 변수는 실제 데이터, 두번째 변수는 인덱스 값이다.
    • :key는 일반적으로 인덱스값을 잡아줌
  • 조건문
    • <div v-if="true">이 부분은 보이는 부분</div>
      <div v-if="false">이 부분은 안보이는 부분</div>
      <div v-if="물론 변수 사용 가능"></div>
    • <div v-if="num === 1"></div>
      <div v-else-if="num === 2"></div>
      <div v-else="num === 1"></div>
  • 이벤트
    • <div @click="클릭했을때 일어날 이벤트내용 혹은 함수 호출"></div>
  • 함수
    • ...
      methods: {
      	함수명(매개변수 명) {
          	실행 코드
          }
      }
      ...
    • ex) 클릭이벤트 실행시 작동해야 하는 코드가 길때 사용하고 기타 등등이 있다.
  • Component
    • <template>
      	<h1>component 부분 마크업</h1>
      </template>
      
      <script>
      <!-- vue 코드 작성 부분 -->
      
      export default {
      	...
      }
      </script>
      
      <style scoped> <!-- 해당 컴포넌트에만 유효한 스타일을 적용하고싶으면 scoped를 style옆에 붙여주자 -->
      <!-- 스타일 적용 부분 -->
      </style>
    • 컴포넌트 파일 내부 구조는 위와 같이 작성하면 되고 파일 이름은 관례상 PascalCase를 사용해주는것이 일반적이다.
    • ex) Menu.vue
    • <template>
      	<Menu/>
          <Menu></Menu>
      </template>
      
      <script>
      import Menu from './Menu.vue'
      
      export default {
      	component : {
          	Menu,
          }
      }
      </script>
      
      <style>
      
      </style>
    • 컴포넌트 사용
      • 1. 해당 컴포넌트 파일을 import해온다.
      • 2. 컴포넌트에 import해온 파일을 등록해 준다.
      • 3. template부분에서 등록해놓은 컴포넌트를 태그 형식으로 사용할 수 있다. 
  • 컴포넌트간 데이터 통신
    • 부모요소에서 자식요소로 데이터를 보내는방법
    • <template>
      
      <Menu :menuNumber="menuNumber"/>
      
      </template>
      
      <script>
      export default {
      	data() {
          	return {
              	menuNumber : 1
              }
          }
      }
      </script>
    • 자식요소에서 부모요소에게 데이터를 받는 방법
    • <template>
      	{{menuNumber}}
      </template>
      
      <script>
      export default {
      	name: 'Menu'
      	props: {
          	menuNumber : Number
          }
      }
      </script>
    • 자식요소가 부모에게 데이터 변경을 요청하는 방법
    • <!-- 자식 컴포넌트 -->
      <template>
      	<button @click="$emit('eventName')"></button>
      </template>
      
      <script>
      export default {
      	name: 'Menu',
      	props: {
          	menuNumber : Number
          }
      }
      </script>
      
      <!-- 부모 컴포넌트 -->
      <template>
      	<Menu @eventName="menuBtnClick"/>
      </template>
      
      <script>
      export default {
      	name: 'Menu',
      	methods : {
          	menuBtnClick() {
      			alert('메뉴를 클릭했네요??')
              }
          }
      }
      </script>
    • 위와 같은 방법으로 특정 데이터를 변경 혹은 함수를 호출해서 이벤트 처리가 가능하다.
  • input Data 가져오기
    • <template>
        <div>
          <input @input="show1 = $event.target.value" type="text"/>
          <input @input="changeShow" type="text" />
          <input v-model="show3" type="text">
          <p>{{ show1 }}</p>
          <p>{{ show2 }}</p>
        </div>
      </template>
      
      <script>
      export default {
        name: "App",
        data() {
          return {
            show1: "",
            show2: "",
            show3: "",
          };
        },
        methods: {
          changeShow(e) {
            this.show2 = e.target.value;
          },
        },
      };
      </script>
    • $event.target.value : 이벤트가 발생했을때 이벤트 타겟의 값을 가져올 수 있다.
    • v-model : $event.target.value와 같음 / input에 데이터 입력시 show3의 값이 바뀜
  • watcher
    • 데이터의 변경을 감지하고 변경이 일어났을때 어떠한 동작을 할 지 정의할 수 있다.
    • <template>
        <div>
          <input type="text" v-model="text" />
        </div>
      </template>
      
      <script>
      export default {
        name: "App",
        data() {
          return {
            text: "",
          };
        },
        watch: {
          text(a) {
            alert(a + "변경");
          },
        },
      };
      </script>

'Front-end > Vue.js' 카테고리의 다른 글

6. vue router - 2  (0) 2021.11.04
5. vue router - 1  (0) 2021.11.04
4. 라이프사이클(Life Cycle)  (0) 2021.11.03
3. Transition(Animation)  (0) 2021.11.03
1. 설치 및 프로젝트 설정  (0) 2021.11.03

+ Recent posts