본문 바로가기
클라우드 데브옵스

Day67 2024.08.27.화 #코딩일기

by SSONG1521 2024. 8. 27.

 

 

 

 

1. 향후 업무
  [1]  1차 Project((Spring Project) 상세일정(09/11~10/16)
      1) Spring : 제작 발표회 (9/10)
      2) Spring Project 개별 진행(09/11~09/25)
      3) Spring Project  중간 통합 Version1.0 (09/26)
      4) Spring Project  최종 기능 (09/27~10/09)
      5) Spring Project  최종 통합 진행 (10/10)
      6) Spring Design / Test / PPT/ 업무공유 (10/11~10/15)
      7) Spring Project  최종  발표회(10/16)
      8) 시험
        [1] Spring / AWS  : 09/09

----------------   향후 조정 가능      ---------------
2. 기업 Project 또는 Spring 내부 2차 Project(10/17~11/15)
   [1] 각 기업 멘토 지도하 진행 (10/17~11/14)
   [1] 기업 Project  최종  발표회 (11/15)
   [2] 취업 관련 기출 모의 면접 (10/29~10/31)            

   [3] 취업 상담[강사/취업지원팀](10/21~11/08)
   [4] 11/08 : Spring 산출물 제시
   [5] 기업 Project 제작 발표회(11/15)
   [6] 11/13~11/14 : Spring Design / Test / PPT/ 업무공유
3) 최종 마무리
   1) 기업 Project(2차 Project) 제작 발표회(11/15)
   2) 수료식(11/18)
   3) 취업관련 설명회 / 이력서 강의
       - 일정조율

 


웹페이지 켜기 전에 vue에서 Terminal -> npm run dev 입력 후 실행

 



 

 

folder 02
vue App_toRef.vue
<template>
  <div>
    <p>book.author: {{ book.author }}</p>
    <p>book.title: {{ book.title }}</p>
    <p>author: {{ author }}</p>
    <p>title: {{ title }}</p>
  </div>
</template>

<script>
import { reactive } from 'vue'

export default {
  setup() {
    const book = reactive({
      author: 'Vue3',
      year: '2024',
      title: 'Vue3 기본',
      description: '당신은 이 책을 읽습니다   ;)',
      price: '22000'
    })
    return {
      book
    }
  }
}
</script>

<style lang="scss" scoped></style>
view 단

 

- author과 title을 빼고 나머지는 나와진다. -> author과 title도 뜨게 하는 방법

 

 - 하나의 함수들을 추가해준다.



 

 

folder 03
vue App_computed.vue
<template>
  <div>
    <h2>teacher.name: {{ teacher.name }}</h2>
    <p>{{ existLecture() }}</p>
    <p>{{ existLecture() }}</p>
    <p>{{ hasLecture }}</p>
    <p>{{ hasLecture }}</p>
    <button v-on:click="counter++">Counter: {{ counter }}</button>
    <h2>이름</h2>
    <p>{{ fullName }}</p>
    <p>{{ firstName }}</p>
    <p>{{ lastName }}</p>
  </div>
</template>

<script>
import { computed, reactive, ref } from 'vue'

export default {
  setup() {
    const teacher = reactive({
      name: '♡ cutie kwang ♡',
      lectures: ['HTML', 'Jsp', 'Vue3']
    })

    const hasLecture = computed(() => {
      console.log('computed')
      return teacher.lectures.length > 0 ? '있음' : '없음'
    })

    const existLecture = () => {
      console.log('method')

      return teacher.lectures.length > 0 ? '있음' : '없음'
    }

    const counter = ref(0)
    const firstName = ref('Kwang')
    const lastName = ref('cutie')

    const fullName = computed({
      get() {
        return firstName.value + ' ' + lastName.value
      },
      set(value) {
        ;[firstName.value, lastName.value] = value.split(' ')
      }
    })

    console.log('fullName.value 출력: ', fullName.value)

    // fullName.value = '강 태광'

    return {
      teacher,
      hasLecture,
      existLecture,
      counter,
      fullName,
      firstName,
      lastName
    }
  }
}
</script>

<style lang="scss" scoped></style>
view 단

 

 - 선생님 이름 templates에서 표현해보기

 - 

 - count 함수를 더해주니, cash 에 저장된 것만 한 번만 실행되고, 나머지는 계속 증가한다,. (method)

 

 - set함수로 인해 -> 구조분해할당 

   이름을 띄어쓰기 ' '로 구분해서 firstName 과 lastName으로 나누어준다.

 

 - hasLecture는 1번만 수행된 것 computed로 수행했을 때

 - v-on은 @로 주어도 된다.

 

 

 



folder 03
vue App_style_binding1.vue
<template>
  <div :style="styleObject">
    한국 축구대표팀의 '임시 사령탑'으로 선임된 황선홍 23세 이하(U-23) 대표팀 감독이 손흥민(토트넘)과
    물리적 충돌을 빚은 이강인(파리 생제르맹)을 주전 선수로 선발할지 여부에 관심이 쏠리고 있는
    가운데, 황 감독이 손흥민과 이강인의 화해를 적극 중재한 것으로 알려져 눈길을 끈다.
  </div>
  <button v-on:click="fontSize--">-</button>
  <button v-on:click="fontSize++">+</button>
</template>

<script>
import { computed, ref } from 'vue'

export default {
  setup() {
    const fontSize = ref(13)
    const styleObject = computed(() => {
      return {
        color: 'red',
        fontSize: fontSize.value + 'px'
      }
    })

    return {
      fontSize,
      styleObject
    }
  }
}
</script>

<style lang="scss" scoped></style>
view 단

 

 - 똑같은 object 면 한 번만 실행되는게 styleObject

 

 

 

 

 

 

 

folder 03
vue App_style_binding2.vue
<template>
  <div :style="styleObject">
    독일에서 재기를 노린 에릭 다이어가 구단 상황으로 인해 스텝이 꼬이고 말았다. 자칫 잘못하면
    다이어는 손흥민과도 작별할 수 있는 상황에 처했다. 스카이스포츠 독일이 28일(한국시간) 뮌헨이
    계약을 맺은 2023-2024시즌을 끝으로 그를 더이상 활용하지 않을 것이라고 전망했다.
  </div>
  <button @click="fontIncrease('-')">-</button>
  <button v-on:click="fontIncrease('+')">+</button>
  <button v-on:click="colorChange">colorChange</button>
</template>

<script>
import { reactive, ref } from 'vue'

export default {
  setup() {
    const styleObject = reactive({
      color: 'red',
      fontSize: '13px'
    })

    const fontSizeInt = ref(13)

    const fontIncrease = (sign) => {
      console.log('fontIncrease click start...')
      console.log('fontIncrease click start...' + sign)
      //===: 값과 값의 종류(Data Type)가 모두 같은지를 비교
      if (sign === '+') {
        fontSizeInt.value++
        styleObject.fontSize = fontSizeInt.value + 'px'
      } else {
        fontSizeInt.value--
        styleObject.fontSize = fontSizeInt.value + 'px'
      }
    }

    const colorValue = ref('red')
    const colorChange = () => {
      console.log('colorValue.value click->' + colorValue.value)
      if (colorValue.value === 'red') {
        colorValue.value = 'blue'
        styleObject.color = colorValue.value
      } else {
        colorValue.value = 'red'
        styleObject.color = colorValue.value
      }
    }

    return {
      styleObject,
      fontSizeInt,
      fontIncrease,
      colorValue,
      colorChange
    }
  }
}
</script>

<style lang="scss" scoped></style>
view 단

 

 - event 처리할 때는 @ annotation으로 처리할 수 있다.

 - () -> 파라미터가 들어온다는 의미이다.

 

 - 먼저 +와 -가 console창에 나오는지  확인해준다.

 

 - == 와 === (값과 값의 종류(Data Type)가 모두 같은지를 비교)

   ==는 값만 비교, ===는 값과 type 같이 비교

 - color바꿔주기

 

 

 

 

 

 

 

folder 03
vue App_vif.vue
<template>
  <div>
    <h2 v-if="visible">Hello Vue3!</h2>
    <h2 v-else>false 입니다.</h2>
    <button v-on:click="visible = !visible">toggle</button>
    <hr />
    <button v-on:click="type = 'A'">A</button>
    <button v-on:click="type = 'B'">B</button>
    <button v-on:click="type = 'C'">C</button>
    <button v-on:click="type = 'D'">D</button>
    <h2 v-if="type === 'A'">A입니다.</h2>
    <h2 v-else-if="type === 'B'">B입니다.</h2>
    <h2 v-else-if="type === 'C'">C입니다.</h2>
    <h2 v-else>A, B, C가 아닙니다.</h2>
    <hr />
    <template v-if="visible">
      <h1>News</h1>
      <p>국가채무 400조원 이상 늘어</p>
      <p>주민등록인구 4년 연속 내리막</p>
    </template>
    <h1 v-show="ok">Title 입니다.^^</h1>
    <button v-on:click="ok = !ok">show toggle</button>
  </div>
</template>

<script>
import { ref } from 'vue'

export default {
  setup() {
    const visible = ref(false)
    const type = ref('A')
    const ok = ref(true)

    return {
      visible,
      type,
      ok
    }
  }
}
</script>

<style lang="scss" scoped></style>
view 단

 

 - visible: false나 true 둘 중 하나

 - toggle을 클릭하면 false가 true 로 바뀌게 된다.

 - v-show="ok" -> 이면 나오고 

 

 

 

 

 

 



folder 04
vue App_directive.vue
<template>
  <div>
    <p>{{ msg }}</p>
    <p v-text="msg"></p>
    <p v-html="htmlStr"></p>
    <p v-text="htmlStr"></p>
    <p>v-pre를 사용하면 DOM이 컴파일에서 제외되어 그대로 출력</p>
    <p v-pre>{{    msg 안녕하세요 }}</p>
    <p v-once>{{ msg }}!!!!</p>
  </div>
</template>

<script>
import { ref } from 'vue'

export default {
  setup() {
    const msg = ref('안녕하세요')
    const htmlStr = ref('<h1>안녕!!!</h1>')

    return {
      msg,
      htmlStr
    }
  }
}
</script>

<style lang="scss" scoped></style>
view 단

 

 - v-pre는 문자 그대로 입력된다. -> 변수를 변수로 인식하지 못함

 

 

 



folder 04
vue App_event.vue
<template>
  <div>
    <button @click="printEventInfo('Hello Vue3', $event)">inline event handler</button>
    <hr />
    <input type="text" @keyup="onKeyupHandler" />
  </div>
</template>

<script>
export default {
  setup() {
    const printEventInfo = (message, event) => {
      console.log('message: ', message)
      console.log('event: ', event)
      console.log('event.target: ', event.target)
      console.log('event.target.tagName: ', event.target.tagName)
    }

    const onKeyupHandler = (event) => {
      console.log('event.key: ', event.key)
    }

    return {
      printEventInfo,
      onKeyupHandler
    }
  }
}
</script>

<style lang="scss" scoped></style>
view 단