id, password만 입력하는 간단한 로그인 화면을 vue에서는 어떻게 validation 하는지 확인해봅시다.
우선 테스트 코드 html 입니다.
userId, passwd 라는 input 과 로그인 button 이 있습니다.
<div class="login-form">
<div class="login-row">
<input type="text" :placeholder="아이디입력해라" v-model="userId" @keydown.enter.prevent="loginProcess"/>
<p class="error" v-show="userIdNo">id없음</p>
<p class="error" v-show="userLen">적어도4자리</p>
</div>
<div class="login-row">
<input type="password" :placeholder="패스워드입력해라" v-model="passwd" @keydown.enter.prevent="loginProcess" @input="resetErrors"/>
<p class="error" v-show="passwdNo">패스워드없음</p>
<p class="error" v-show="passwdLen">자릿수체크</p>
</div>
</div>
<div class="login-btn">
<button type="button" @click="loginProcess">로그인</button>
</div>
보통 jsp에서 사용하는 input에서는 name이나 id 속성을 사용하여 해당 input을 컨트롤 하는데
vue에서는 v-model 이라는 속성으로 input 을 컨트롤 합니다.
앞에 v- 가 붙으면 vue에서 사용하는 속성인 것 같습니다.
v-show는 true면 해당 element를 보여주고 false면 보여주지 않는다고 합니다.
v-show="userIdNo" 라는 것은 userIdNo 가 true이면 "id없음" 이라는 p태그를 보여주고
false면 안 보여줍니다. true인지 false 인지는 아래의 스크립트에서 설정해주면 됩니다.
그리고 스크립트에서 사용하는 이벤트들은 @를 앞에 붙여 사용 합니다.
위에서는 @keydown.enter.prevent 라던지, @click 이 있습니다.
@keydown.enter.prevent 은 해당 input값을 입력 후 엔터 처리시에 발생되는 이벤트며
@click은 말그대로 로그인 버튼을 클릭했을 때 발생합니다.
그리고 이벤트 안에 있는 loginProcess 라는 함수를 스크립트에서 사용합니다.
@input은 해당 input값의 데이터에 변경이 있을 때마다 발생됩니다.
import {reactive} from "vue";
import axios from "axios";
export default {
data() {
return {
userId: '',
passwd: '',
userIdNo: false,
userLen: false,
passwdNo: false,
passwdLen: false
};
},
methods: {
resetErrors() {
this.userIdNo = this.userId.trim() === '' && this.passwd.trim() !== '';
},
loginProcess(event) {
this.userIdNo = !this.userId;
this.userLen = this.userId.length < 4;
this.passwdNo = !this.passwd;
this.passwdLen = this.passwd.length < 4;
}
}
}
가장 간단하게 필요한 부분만 뽑아봤습니다.
위 형태가 가장 간단한 형태이고 export default 안에 보통 선언됩니다.
첫 번째로 data() 안에서는 이 페이지에서 쓰는 객체 변수들을 선언합니다.
여기서는 input 의 v-model 값이었던 userId, passwd 값을 선언하고
나머지는 v-show 값을 선언하였습니다.
methods 에서 html에서 @ 이벤트들을 선언하여 사용하는데요.
passwd input에 @input="resetErrors" 를 여기서 사용합니다.
여기서는 v-show로 설정했던 userIdNo 의 true/false 값을 위해
userId가 없고 passwd가 있으면 true, 그게 아니면 false로 되어 있습니다.
loginProcess 에서는 로그인 버튼 클릭시 발생하는 이벤트 입니다.
여기서도 v-show로 지정했던 객체 변수들에 대해서 true/false 값을 지정하였습니다.
정리하고 보니 간단해보이지만, vue 첫 경험자로써 이것도 처음엔 어버버 했습니다.
뭔가 두려움이 일지만 이것도 차근차근 해보면 더 많은 지식을 알게 되지 않을까 싶습니다.
더 많은 어려움이 있겠지만 하나씩 해결해보도록 하겠습니다.
아, 그리고 참고로 위 정보는 정확한 정보가 아닐 수 있으므로 참고만 하시길 바랍니다.
'개발 > FRONT' 카테고리의 다른 글
ES2015+ (const, let, 템플릿 문자열, 객체 리터럴) (0) | 2024.01.07 |
---|---|
node.js 서버로서의 노드 (0) | 2024.01.07 |
Cookie and JavaScript (1) | 2024.01.03 |
Json Array에서 공백 배열 찾기 (0) | 2024.01.03 |
아이폰(IOS)에서 new Date 포맷 오류 (0) | 2023.12.31 |