어떻게 Vue에서 폼을 신속하게 검증합니까?

9228 단어 webdevvue
오늘은 Vue에서 폼 검증을 신속하고 쉽게 설정하는 방법을 보여 드리려고 합니다.나는 이 문장이 너를 위해 시간을 절약하고, 너에게 조작 가능한 견해를 제공할 수 있기를 바란다.본고는 폼 검증을 설정할 때 직면할 가장 중요한 문제를 총결하였다.
그럼 우리 갑시다!
이 문서에서는 다음을 다룹니다.
  • 표 검증이 무엇인지;
  • 표 검증의 유형;
  • Vue에서 양식을 검증하는 방법
  • 양식 유효성 검사란?


    확인은 규정의 요구에 대한 확인이다.
    간단하게 말하면 이것은 사용자가 표를 작성할 때 반드시 따라야 하는 설명이다.예기치 않은 데이터 또는 악성 데이터의 공격으로부터 애플리케이션을 보호합니다.즉, 사용자가 입력한 문자가 아닌 유효한 전자메일을 보내거나, 이름이 아닌 유효한 전화번호를 보내도록 하는 등이다.

    양식 유효성 검사 유형


    검증의 유형부터 시작합시다.단 두 가지:
  • 클라이언트 인증은 서버에 데이터를 보내기 전에 브라우저에서 검사합니다.즉각적인 응답을 제공하기 때문에 서버 측 검증보다 편리하다.JavaScript 유효성 검사 및 HTML5 양식 유효성 검사 함수로 나눌 수 있습니다.JavaScript 유효성 검사를 수행하려면 JavaScript를 사용합니다.완전 맞춤형.HTML5 양식 유효성 검사 함수에 내장된 양식 유효성 검사를 사용합니다.일반적으로 JavaScript는 필요하지 않습니다.내장 양식 유효성 검사는 더 나은 성능을 제공하지만 JavaScript를 사용하는 것처럼 구성할 수는 없습니다.
  • 서버측 유효성 검사는 데이터를 전송한 후 서버에서 수행됩니다.서버 측 코드는 데이터가 데이터베이스에 저장되기 전에 데이터를 검증하는 데 사용됩니다.데이터가 유효성 검사를 통과하지 않으면 응답은 클라이언트에게 전송되어 사용자에게 어떤 수정을 해야 하는지 알려 줍니다.서버 측 검증은 클라이언트 검증보다 편리하지 않다. 전체 폼을 제출하기 전에 서버 측 검증에 오류가 발생하지 않기 때문이다.그러나 서버 측 검증은 프로그램이 오류나 심지어 악성 데이터를 막는 마지막 방어선이다.모든 유행하는 서버 사이드 프레임워크는 데이터를 검증하고 정리하는 기능을 가지고 있다. (데이터를 더욱 안전하게 한다.)
  • 현실 세계에서 개발자들은 클라이언트와 서버 측 검증을 결합하는 경향이 있다.

    클라이언트 인증


    클라이언트 검증의 주제를 계속 토론하는데 세 가지 유형이 있는데 그것이 바로 실시간 검증, 초점 분실 검증과 폼 제출 검증이다.

  • 즉시: 사용자가 데이터를 입력할 때 터치합니다.입력한 문자마다 검사를 터치합니다.

  • 초점 잃기: 이 필드가 초점을 잃으면, 예를 들어 사용자가 다른 필드를 선택하면 검증을 터치합니다.

  • 폼을 제출할 때: 데이터가 서버에 전송될 때, 단추를 누르면 검증을 터치합니다.
  • 물론 즉시 검증을 사용하는 것이 좋다. 왜냐하면 사용자에게 무슨 문제가 생겼는지 바로 알려주기 때문이다.인터페이스가 일찍 오류를 보고할수록 좋습니다. 사용자가 쉽게 오류를 되돌려주고 복구할 수 있습니다.

    Vee validate를 통해 양식을 어떻게 검증합니까?


    지금까지 Vue에서 가장 좋은 폼 검증 절차는 Vee-Validate라고 생각합니다.
    그것은 자신을 여러 가지 기능을 가진 프레임워크로 자리잡았다.
  • Vue 3 지원
  • SSR 지원
  • 템플릿에 기반한 검증으로 익숙하고 설치하기 쉽다.
  • 🌍 i18n 지원, 40개 이상의 언어로 번역된 오류 지원.
  • 💫 비동기식과 사용자 정의 규칙을 지원합니다.
  • 💪 타자 원고로 썼어요.
  • 제3자 라이브러리 형식의 의존항이 없다.
  • 바로 말씀드리지만 Vue 버전 2를 사용하겠습니다.물론 Vue 3을 예로 들고 싶지만 많은 분들이 아직 이 버전으로 옮길 시간이 없다고 생각합니다.
    그래서 코드를 작성하는 것으로 천천히 전환합시다.다음과 같이 하십시오.
    1단계: 클론example project.git clone https://github.com/denisoed/how-to-validate-form-in-vue.git두 번째 단계: 코드를 보고 우리가 토론하고자 하는 내용을 부분적으로 이해한다.
    세 번째 단계: 그리고 내가 거기에 쓴 모든 것을 알려줄게.
    Nuxt를 사용하는 방법을 보여 드리겠습니다.js를 예로 들다.만약 당신이 아직 익숙하지 않다면, 나는 당신이 나의 previous article 를 읽는 것을 건의합니다.
    기억하는 바와 같이 Nuxt의 모든 플러그인은js는 프로젝트 루트 디렉터리의/plugins 폴더에 저장해야 합니다.폴더로 이동하여 vee validate 파일을 엽니다.js.
    import Vue from 'vue';
    import {
      ValidationObserver,
      ValidationProvider,
      extend,
      configure
    } from 'vee-validate';
    import {
      required,
      email,
      confirmed
    } from 'vee-validate/dist/rules';
    
    extend('required', required);
    
    extend('email', email);
    
    extend('confirmed', {
      ...confirmed,
      message: 'Passwords Don`t Match.'
    });
    
    configure({
      classes: {
        invalid: 'is-invalid'
      }
    });
    
    Vue.component('ValidationObserver', ValidationObserver);
    Vue.component('ValidationProvider', ValidationProvider);
    
    이 파일에는 모든 규칙과 설정이 포함됩니다.Vee validate가 제공하는 서비스가 25 ready-made rules를 초과했습니다.이 목록에는 암호, 메일, 수치, 이미지 등의 검증이 포함되어 있습니다. 사용자 정의 규칙도 추가할 수 있습니다. 이렇게 시도해 보겠습니다.

    유효성 검사 프로그램 사용자 정의 양식


    사실 자신의 규칙을 추가하는 것은 어렵지 않다.핸드폰에 인증서를 작성해 봅시다. "아이폰 필드는 숫자와 대시만 포함해야 합니다."숫자와 대시를 제외한 문자를 입력하면
    extend('phone', {
      validate: value => {
        if (!value) return true
        const regex = /^[0-9\s- +]*$/g
        return Boolean(value.match(regex))
      },
      message: 'The Phone field must contain only numbers and dashes.'
    });
    
    위의 코드를 처리합시다.
    사용자 정의 인증서를 추가하려면 extend 함수를 사용해야 합니다.첫 번째 매개 변수는 규칙의 이름이 될 것입니다. 우리의 예에서 그것은 전화이고, 두 번째 매개 변수는 두 가지 방법을 가진 대상이 될 것입니다.

  • 검증기: 사용자가 입력한 값을 처리합니다.

  • 메시지: 오류가 발생했을 때 준비된 메시지를 반환하는 방법입니다.
  • 이렇게이것은 우리의 사용자 정의 규칙이 역할을 발휘하기에 충분하다.
    이 코드를 vee validate의 아무 곳에나 삽입합니다.js 파일, 현재 새로운 규칙은 전 세계에서 사용할 수 있으며, 모든 구성 요소에서 사용할 수 있습니다.

    우리의 새로운 검증기를 시험하다


    검사할 때가 됐어.색인을 엽니다.페이지 폴더에 vu 파일을 만들고 이 매개 변수로 새 필드를 만듭니다. 변수 아이폰을 데이터에 추가하는 것을 잊지 마십시오.
    <!-- Phone -->
    <ValidationProvider name="Phone" rules="required|phone" v-slot="{ errors }">
      <input v-model="phone" type="text" placeholder="Phone">
      <span class="error">{{ errors[0] }}</span>
    </ValidationProvider>
    
    사용자 정의 인증서가 rules 속성에 추가되었습니다. 이 속성은 필드의 규칙 목록을 저장합니다.| 기호를 사용하여 원하는 수의 규칙을 추가할 수 있습니다.
    다음 명령을 사용하여 프로젝트를 실행합니다.npm i && npm run dev부팅 후 휴대전화의 필드는 필드 목록에 나타나야 한다.
    이것은 우리의 로고입니다. (제목 텍스트를 보기 위해 멈추기)

    문자를 입력하려고 하면 오류 메시지가 표시됩니다.숫자를 입력하면 메시지가 사라집니다.

    우리의 습관 규칙은 유효하다!
    따라서 원하는 인증서를 작성할 수 있지만, 내장된 인증서가 25 pieces 개 이상인 것을 잊지 마십시오.

    ValidationObserver 및 ValidationProvider 구성 요소


    ValidationProvider 구성 요소의 포장은ValidationObserver입니다.모든 필드의 상태를 추적하고 오류가 발생하면 해당 상태를 되돌려줍니다.예를 들어 모든 필드가 유효하면 인자 invalid는false를 되돌려주고, 한 필드가 유효하지 않으면 인자 invalid는true를 되돌려줍니다.
    ValidationObserver 구성 요소의 모든 매개 변수와 속성을 열거하고 설명하지 않습니다. 이 링크에서 더 자세한 내용을 읽을 수 있습니다.ValidationProvider에 대해서도 이렇게 말할 수 있습니다.읽기here.

    오류 메시지 현지화


    질문이 있을 수 있습니다. 오류 메시지를 어떻게 다른 언어로 번역합니까?
    우선 필요한 지역을vee validate로 가져오는 것이 좋습니다.js 설정 파일
    import en from 'vee-validate/dist/locale/en.json';
    import ru from 'vee-validate/dist/locale/ru.json';
    
    그리고localize 방법에서 초기화합니다localize({ en, ru });이제 색인을 봅시다.vu 파일입니다. 변경 사항을 추가합니다.
    오류 정보를 다른 언어로 변환하는 새로운 기능이 필요합니다.이를 위해 우리는 같은 현지화 방법을 도입했다
    ...
    
    <script>
    import { localize } from 'vee-validate';
    
    export default {
    
    ...
    
    새 switchLocale 메서드를 메서드 후크에 추가
    switchLocale() {
      this.locale = this.locale === 'en' ? 'ru' : 'en';
      // switch the locale.
      localize(this.locale);
    }
    
    네가 가장 하지 말아야 할 일은 언어 전환 단추를 추가하는 것이다.제목 아래에 배치할 수 있습니다. 예를 들면 다음과 같습니다.
    <button
      class="switch-local"
      @click="switchLocale"
    >
      Switch Locale
    </button>
    
    그만해.페이지를 열고 이메일 필드에 잘못된 데이터를 입력한 다음 언어 변경 버튼을 클릭하면 오류 메시지가 다른 언어로 변경됩니다.
    이제 맞춤형 휴대전화 검증기를 위해 메시지를 번역해 봅시다.
    V형차로 돌아가.js 파일을 설정하고 다음과 같이 현지화 방법의 코드를 변경합니다.
    localize({
      en: {
        messages: {
          ...en.messages,
          phone: 'The Phone field must contain only numbers and dashes.'
        }
      },
      ru: {
        messages: {
          ...ru.messages,
          phone: 'Поле Phone должно содержать только цифры и тире.'
        }
      }
    });
    
    사용자 정의 인증서의 메시지 키를 삭제하는 것을 잊지 마십시오.이렇게 해야 합니다.
    extend('phone', {
      validate: value => {
        if (!value) return true
        const regex = /^[0-9\s- +]*$/g
        return Boolean(value.match(regex))
      }
    });
    
    이렇게 해서 우리는 가서 볼 수 있다.아이폰 필드에 잘못된 데이터를 입력하면 새 메시지가 표시됩니다. Switch Locale 단추를 누르면 번역할 수 있습니다.

    결론


    나는 우리가 여기까지 할 수 있다고 생각한다.내가 보여준 요점은 응용 프로그램이나 사이트에서 기본적인 검증 단계를 구축하기에 충분하다.
    자세한 내용은 official documentation를 참조하십시오.
    감사합니다!
    이전 릴리즈maddevs.io/blog

    좋은 웹페이지 즐겨찾기