냥코딩쟝
Published 2022. 9. 30. 21:22
vue 기초 코드 -js notes-/vue.js

<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>

//:to → 바뀔수 있는

<router-link :to="{ path: 'home' }">Home</router-link>


replace prop를 설정하면 클릭할 때 router.push() 대신 router.replace()를 호출할 것이므로 내비게이션은 히스토리 레코드를 남기지 않을 것입니다.

<router-link :to="{ path: '/abc'}" replace></router-link>

→ 뒤로가기로 남기지 않는다

<router-link :to="{ path: 'relative/path'}" append></router-link>

router link 가 모든것이 가능하다

router와 a태그와 다른점이 처음부터 다운받기 때문에 router를 쓰는것이 낫다

SPA의 특징//무엇을 모르는지 공부

<a herf="/mytest">MyTest</router-link>

vue파일 로딩 실행 -life cycle

component -

create-없는것을 쓸려고할때(마운트를 하기위한 조건)

mounte-모든 요소가 준비가 될때

beforeCreated --> created --> beforeMount --> mounted (–> beforeUpdated --> updated) --> beforeDestroy --> destroyed

https://v3.router.vuejs.org/kr/guide/essentials/dynamic-matching.html

const User = {
  template: '<div>User</div>'
}

const router = new VueRouter({
  routes: [
    // 동적 세그먼트는 콜론으로 시작합니다.
    { path: '/user/:id', component: User }
  ]
})
const User = {
  template: '<div>User {{ $route.params.id }}</div>'
}

<script>
export default {
  data() {
    return {
      age: 20
    }
  },
  methods: {
    addAge(year) {
      this.age = this.age + year
    }
  }
}

//

this.age += ye\\
<template>
  <div>
    <h1>Event test</h1>
    <h3>1. 클릭/더블클릭 이벤트</h3>
    <div>
      <div>
        <p>나의 나이는: {{ age }}</p>
        <button @click="addAge(1)">1살 추가</button>
        <button @click="deleteAge(1)">1살 삭제</button>
        <button @dblclick="addAge(10)">10살씩 추가(더블클릭)</button>
        <button @click.once="addAge(1)">1살 추가(한번만)</button>
      </div>
      <div style="margin-top: 20px">
        <input v-model="message" />
        <button @click="printMessage">콘솔 프린트</button>
      </div>
    </div>
    <h3>3. 마우스 추적 이벤트</h3>
    <div>
      <div style="margin-top: 20px; height: 200px; width: 300px; border: 1px solid red" @mousemove="mouseTrack">
        마우스 X: {{ mouseX }}, 마우스 Y: {{ mouseY }}
      </div>
    </div>
    <h3>4. 키보드 이벤트</h3>
    <div>
      <div>이름: <input v-model="inputName" @keyup.enter="setMyName" />(Enter 이벤트)</div>
      <div>아이디: <input v-model="inputId" @keyup.ctrl.enter="setMyId" />(Ctrl-Enter 이벤트)</div>
      <p>나의 이름: {{ myName }}</p>
      <p>나의 아이디: {{ myId }}</p>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      age: 20,
      message: null,
      mouseX: 0,
      mouseY: 0,
      inputName: null,
      inputId: null,
      myName: null,
      myId: null
    }
  },
  methods: {
    addAge: function (year) {
      this.age += year
    },
    deleteAge: function (year) {
      this.age -= year
    },
    printMessage() {
      console.log(this.message)
    },
    mouseTrack(event) {
      // console.log(event)
      this.mouseX = event.offsetX
      this.mouseY = event.offsetY
    },
    setMyName() {
      this.myName = this.inputName
    },
    setMyId() {
      this.myId = this.inputId
    }
  }
}
</script>

//message:’’ message2:null, message3:undefined, message4:false

null 암것도 없음 nothing - 정의 되지 않는 무엇이 들어올기 아직 모름

undefined:선언하지 않는 변수를 넣을때 : 없는 변수를 찾을때

메세지 바인딩 {{ message }} → 출력되는것을 볼 수 있다

mouseTrack(event) {
      // console.log(event)
      this.mouseX = event.offsetX
      this.mouseY = event.offsetY
@mousemove="mouseTrack">
        마우스 X: {{ mouseX }}, 마우스 Y: {{ mouseY }}
mouseTrack(event) {
      // console.log(event)
      this.mouseX = event.offsetX
      this.mouseY = event.offsetY
mouseX: 0,
mouseY: 0,

마우스 의 위치값을 볼 수 있다

<div>이름: <input v-model="inputName" @keyup.enter="setMyName" />(Enter 이벤트)</div> <div>아이디: <input v-model="inputId" @keyup.ctrl.enter="setMyId" />(Ctrl-Enter 이벤트)</div> <p>나의 이름: {{ myName }}</p> <p>나의 아이디: {{ myId }}</p>

<div>이름: <input v-model="inputName" @keyup.enter="setMyName" />(Enter 이벤트)</div>
      <div>아이디: <input v-model="inputId" @keyup.ctrl.enter="setMyId" />(Ctrl-Enter 이벤트)</div>
      <p>나의 이름: {{ myName }}</p>
      <p>나의 아이디: {{ myId }}</p>

(

v-on:click

@click

와 같다.)

@click

: 클릭 이벤트

@dblclick

: 더블클릭 이벤트

@mousemove

: 마우스 움직임 감지 이벤트

@keyup

: 키보드 감지 이벤트(keyup, keydown, keypress)

<p>Age + A = {{ addToA }}</p>
    <p>Age + B = {{ addToB }}</p>

// 
ddToA: function () {
      console.log('addToA', this.a, this.age)
      return this.a + this.age
    },
    addToB() {
      console.log('addToB', this.b, this.age)
      return this.b + this.age

computed → this.a 와 연결

<template>
  <div>
    <h1>v-if, v-show Test</h1>
    <button @click="error = !error">Toogle error</button>
    <button @click="success = !success">Toggle success</button>
    <div>
      <h3>v-if</h3>
      <div>
        <p>현재 error 상태는?</p>
        <p v-if="error" class="errBox">에러입니다.</p>
        <p v-else>에러 상태가 아닙니다.</p>
      </div>
      <h3>v-show</h3>
      <div>
        <p>현재 success 상태는?</p>
        <p v-show="success" class="sucBox">성공입니다.</p>
        <p v-show="!success">성공 상태가 아닙니다.</p>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      error: false,
      success: false
    }
  }
}
</script>

<style scoped>
.errBox {
  background: red;
  color: white;
}
.sucBox {
  background: green;
  color: white;
}
</style>

v-if는 보이지 않는것 v-show 못보는것

<hr />
    age : {{ age }}
    <div>결과체크</div>
    <div v-if="age" style="background-color: yellow">나이검사</div>

—> 0 값은 특별 대우

쌍따옴표 제이슨

v-for Test

원본 출력

[ "apple", "orange", "banana", "mango" ]

[ { "name": "홍길동", "age": 20, "gender": "male" }, { "name": "김길동", "age": 23, "gender": "male" }, { "name": "고길순", "age": 25, "gender": "female" } ]

다듬어서 출력

과일 리스트

  • apple
  • orange
  • banana
  • mango

사용자 리스트

  1. 그대로 출력

{ "name": "홍길동", "age": 20, "gender": "male" }

{ "name": "김길동", "age": 23, "gender": "male" }

{ "name": "고길순", "age": 25, "gender": "female" }

  1. 항목별 출력

홍길동: 20, male

김길동: 23, male

고길순: 25, female

<li v-for="(fruit, index) in fruits" :key="`fruit-${index}`">{{ fruit }}</li>

제이슨은 쌍따옴표

<div v-for="(user, index) in users" :key="index">
        <span>{{ user.name }}: {{ user.age }}, {{ user.gender }}</span>
      </div>

@ 절대 경로

mixins: [commonMx],//데이터 위에 넣기 data() {

[ commonMix ]- 리스트 타입

created() {
    this.mixinTest()

<template>
  <div>
    <h1>Mixin Test</h1>
    <p>{{ mixin.test }}</p>
  </div>
</template>

<script>
import commonMx from '@/components/mixin/commonMixin'

export default {
  mixins: [commonMx],
  data() {
    return {
      mixin: {
        test: 'aaa'
      }
    }
  },
  created() {
    this.mixinTest()
  }
}
</scr


vue는 현재페이지가 아닌 곳에 에러가 발생해도 전체에서 에러가 난다

무조건 컴퓨티드에 넣기

component → 세분화

'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
    'no-unused-vars': ['warn', { vars: 'all', args: 'after-used', ignoreRestSiblings: false }],
    'vue/multi-word-component-names': [
      'warn',
      {
        ignores: ['index', 'Header', 'Footer']
      }
    ]
  }
}

—>eslint에 ignore 만들기

'-js notes- > vue.js' 카테고리의 다른 글

vue.js기초- 백엔드와 연결  (0) 2022.09.30
vue 기초-vue.js의 구성  (0) 2022.09.30
profile

냥코딩쟝

@yejang

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!