서버리스 웹 앱에 메일 양식 추가 구현 ~ 프런트 엔드 편 ~
14776 단어 VuetifyVeeValidateVue.jsAppSyncAWS
서버리스 웹 앱에 메일 양식 추가 구현 ~ 프런트 엔드 편 ~
소개
AWS를 활용한 서버리스 웹 앱 제작로 만든 웹 앱에 메일 양식을 추가 구현합니다.
프런트 엔드 백엔드의 2부 구성으로 하고 있습니다.
백엔드편은 이쪽.
서버리스 웹 앱에 메일 양식 추가 구현 ~ 백엔드편 ~
프런트 엔드
Vue.js 웹 앱에 메일 양식용 페이지를 추가합니다.
VeeValidate 사용
메일 폼의 각 입력값 체크를 위해서, VeeValidate라고 하는 것을 이용했습니다.
VeeValidate는 Vue.js의 유효성 검사 구성 요소 라이브러리입니다.
사용하려면 먼저 VeeValidate를 프로젝트에 설치해야합니다.
npm i vee-validate
사용법 등에 대한 자세한 내용은 다음 페이지를 참조하십시오.
htps : // ぉ 가라 tm. 기주 b. 이오/ゔぇ에ーゔぁぃ다테/오오゜rゔぃ에w. html
구성 요소 구현
VeeValidate를 이용해 유효성 검증을 적용한 메일 양식 화면의 구성 요소를 구현합니다.
디자인 컴포넌트는 예에 따라 Vuetify를 활용합니다.
필요한 입력 항목을 모두 적절하게 입력하지 않으면 SUBMIT 버튼이 유효하지 않게 밸리데이션을 유효하게 하고, 단, SUBMIT 버튼을 눌러도 입력 내용을 경고하는 것만으로 둡니다. (백엔드 호출은 나중에 구현됩니다.)
src/components/Mail.vue<template>
<v-container>
<p>Mail Form</p>
<ValidationObserver ref="observer" v-slot="{ validate, reset, invalid }">
<ValidationProvider v-slot="{ errors }" name="name" rules="required|max:25">
<v-text-field
label="Name"
v-model="name"
:counter="25"
:error-messages="errors"
required
></v-text-field>
</ValidationProvider>
<ValidationProvider v-slot="{ errors }" name="email" rules="required|email">
<v-text-field
label="E-mail"
v-model="email"
:error-messages="errors"
required
></v-text-field>
</ValidationProvider>
<ValidationProvider v-slot="{ errors }" name="contens" rules="required|max:300">
<v-textarea
label="Message"
v-model="message"
:error-messages="errors"
:counter="300"
rows="8"
required
></v-textarea>
</ValidationProvider>
<v-btn @click="onSubmit" :disabled="invalid">submit</v-btn>
<v-btn @click="onValidate">validate</v-btn>
<v-btn @click="onClear">clear</v-btn>
</ValidationObserver>
</v-container>
</template>
<script>
import { required, email, max } from "vee-validate/dist/rules"
import { extend, ValidationObserver, ValidationProvider, setInteractionMode } from "vee-validate"
setInteractionMode("eager");
extend("required", {
...required,
message: "{_field_} can not be empty",
});
extend("max", {
...max,
message: "{_field_} may not be greater than {length} characters",
});
extend("email", {
...email,
message: "Email must be valid",
});
export default {
name: "Mail",
components: {
ValidationProvider,
ValidationObserver,
},
data: () => ({
name: "",
email: "",
message: "",
}),
methods:{
async onSubmit(){
alert(this.name + " / " + this.email + " / " + this.message);
},
onValidate(){
this.$refs.observer.validate();
},
onClear(){
this.name = "";
this.email = "";
this.message = "";
this.$refs.observer.reset();
}
}
}
</script>
실행 결과
백엔드
백엔드편 에 기재되어 있습니다.
끝나면 돌아와주세요.
프런트 엔드에서 AppSync 호출
백엔드가 끝나면 마지막으로 웹 앱에서 호출합니다.
백엔드편에서 AppSync에 추가한 IF(processSendMail)를 웹 앱에서 요청합니다.
src/graphql/mutations.jsexport const processSendMail = `
mutation processSendMail($input: ProcessSendMailInput!) {
processSendMail(input: $input) {
statusCode
body
}
}
`;
src/components/Mail.vue :
<script>
import { required, email, max } from "vee-validate/dist/rules"
import { extend, ValidationObserver, ValidationProvider, setInteractionMode } from "vee-validate"
import { Auth, API, graphqlOperation } from 'aws-amplify';
import { processSendMail } from "../graphql/mutations";
:
methods:{
async onSubmit() {
let apiResult = await API.graphql(graphqlOperation(processSendMail,
{input : {name: this.name, email: this.email, message: this.message}})
).catch(error => {
console.error(error);
});
},
실행하여 양식을 작성하고 SUBMIT 버튼을 눌러 메일이 도착하는지 확인하십시오.
후기
백엔드편 에 정리해 씁니다.
Reference
이 문제에 관하여(서버리스 웹 앱에 메일 양식 추가 구현 ~ 프런트 엔드 편 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/w2or3w/items/b05df2bf49cba13a542e
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
npm i vee-validate
<template>
<v-container>
<p>Mail Form</p>
<ValidationObserver ref="observer" v-slot="{ validate, reset, invalid }">
<ValidationProvider v-slot="{ errors }" name="name" rules="required|max:25">
<v-text-field
label="Name"
v-model="name"
:counter="25"
:error-messages="errors"
required
></v-text-field>
</ValidationProvider>
<ValidationProvider v-slot="{ errors }" name="email" rules="required|email">
<v-text-field
label="E-mail"
v-model="email"
:error-messages="errors"
required
></v-text-field>
</ValidationProvider>
<ValidationProvider v-slot="{ errors }" name="contens" rules="required|max:300">
<v-textarea
label="Message"
v-model="message"
:error-messages="errors"
:counter="300"
rows="8"
required
></v-textarea>
</ValidationProvider>
<v-btn @click="onSubmit" :disabled="invalid">submit</v-btn>
<v-btn @click="onValidate">validate</v-btn>
<v-btn @click="onClear">clear</v-btn>
</ValidationObserver>
</v-container>
</template>
<script>
import { required, email, max } from "vee-validate/dist/rules"
import { extend, ValidationObserver, ValidationProvider, setInteractionMode } from "vee-validate"
setInteractionMode("eager");
extend("required", {
...required,
message: "{_field_} can not be empty",
});
extend("max", {
...max,
message: "{_field_} may not be greater than {length} characters",
});
extend("email", {
...email,
message: "Email must be valid",
});
export default {
name: "Mail",
components: {
ValidationProvider,
ValidationObserver,
},
data: () => ({
name: "",
email: "",
message: "",
}),
methods:{
async onSubmit(){
alert(this.name + " / " + this.email + " / " + this.message);
},
onValidate(){
this.$refs.observer.validate();
},
onClear(){
this.name = "";
this.email = "";
this.message = "";
this.$refs.observer.reset();
}
}
}
</script>
export const processSendMail = `
mutation processSendMail($input: ProcessSendMailInput!) {
processSendMail(input: $input) {
statusCode
body
}
}
`;
:
<script>
import { required, email, max } from "vee-validate/dist/rules"
import { extend, ValidationObserver, ValidationProvider, setInteractionMode } from "vee-validate"
import { Auth, API, graphqlOperation } from 'aws-amplify';
import { processSendMail } from "../graphql/mutations";
:
methods:{
async onSubmit() {
let apiResult = await API.graphql(graphqlOperation(processSendMail,
{input : {name: this.name, email: this.email, message: this.message}})
).catch(error => {
console.error(error);
});
},
Reference
이 문제에 관하여(서버리스 웹 앱에 메일 양식 추가 구현 ~ 프런트 엔드 편 ~), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/w2or3w/items/b05df2bf49cba13a542e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)