Next와 식수 알림을 설정합니다.js와 키로
18031 단어 reactvercelnextjstypescript
Qurrel은 오픈된 작업 줄 서기 서비스로 사용하기 쉽고 사람들의 흥미를 불러일으킨다.
이 강좌에서, 우리는 그것을 사용하여 식수 알림을 만들 것이다. 왜냐하면 당신이 나처럼 때로는 잊어버리기 쉽기 때문이다.
Check out the finished version here: water-reminder.quirrel.dev
이 강좌를 배우려면 Next에 대해 조금 알고 계실 것입니다.js.
만약 당신이 그것에 대해 완전히 낯설다면, 먼저 보십시오 Next tutorial.
시작합시다!
우리가 해야 할 첫 번째 일은 새로운 다음을 창조하는 것이다.js 프로젝트.
$ npx create-next-app water-reminder
가장 좋아하는 편집기에서 water-reminder
을 열고 npm run dev
를 실행하여 개발 환경을 시작합니다.
보기pages/index.js
및 다음 내용으로 대체합니다.
// pages/index.js
export default function Home() {
return (
<main>
<h1>
Water Drinking Reminder
</h1>
<p>
I want to be reminded under the following e-mail:
</p>
<form
onSubmit={(evt) => {
evt.preventDefault();
const formData = new FormData(evt.target);
const email = formData.get("email");
alert(email);
}}
>
<input
name="email"
type="email"
placeholder="E-Mail"
/>
<button type="submit">
Submit
</button>
</form>
</main>
);
}
알림을 위한 전자 메일을 제출할 수 있는 태그와 간단한 폼이 포함되어 있습니다.
현재 입력한 전자 메일만 알립니다.
브라우저에서 열기localhost:3000.
다음과 유사해야 합니다.
양식을 백엔드에 커밋
pages/api/setupReminder.js
를 생성하고 다음 코드를 추가하여 새 API 라우팅을 설정합니다.
// pages/api/setupReminder.js
export default async (req, res) => {
const email = req.body;
console.log(`I'll setup the reminder for ${email}.`);
res.status(200).end();
}
이제 양식 값은 alert
-ing이 아닌 새로 만든 API 라우팅으로 게시합니다.
복귀 pages/index.js
및 교체:
// pages/index.js
onSubmit={(evt) => {
evt.preventDefault();
const formData = new FormData(evt.target);
const email = formData.get("email");
- alert(email);
+ fetch("/api/setupReminder", { method: "POST", body: email });
}}
양식을 제출하면 개발 콘솔에 전자 메일이 인쇄됩니다.
이제 양식과 API 라우팅을 연결하여 키로와 이메일로 보냅니다.
괴원을 설치하다
Qurrel은 작업 대기열 서비스입니다.
"10분 안에/api/queue를 통해 전화해 주세요"라는 요청을 받아들여 저장하고 요청에 따라 전화해 주십시오 /api/queue
.
키로의 가장 좋은 점은 키로 CLI를 사용하여 로컬에서 완전히 실행할 수 있다는 것입니다.
$ npm install -g quirrel
$ quirrel
🎉 Starting the Quirrel Dev Environment 🎉
이제 pages/api/queues/reminder.js
를 만들고 다음 내용을 입력하여 새 대기열을 만듭니다.
// pages/api/queues/reminder.js
import { Queue } from "quirrel/next";
export default Queue(
"api/queues/reminder", // the route it's reachable under
async (recipient) => {
console.log(`Sending an E-Mail to ${recipient}`);
}
);
Queue
에는 두 가지 인자가 있습니다. 첫 번째는 API 루트 위치이고, 두 번째는worker 함수입니다.
작업을 실행할 때마다worker 함수를 호출합니다.
새로 만든 대기열을 사용하려면 API 라우팅에서 가져오기만 하면 됩니다.
// pages/api/setupReminder.js
+ import reminderQueue from "./queues/reminder";
// 👆 don't forget this
export default async (req, res) => {
const email = req.body;
- console.log(`I'll setup the reminder for ${email}.`);
+ await reminderQueue.enqueue(
+ email,
+ {
+ id: email,
+ delay: "30min",
+ repeat: {
+ every: "30min",
+ times: 16, // 16 * 30min = 8h
+ },
+ }
+ );
res.status(200).end();
};
전화.enqueue
를 하면 새로운 일을 안배할 것이다.
첫 번째 매개변수는 작업의 유효 로드이고 두 번째 매개변수에는 다음과 같은 옵션이 있습니다.
$ npx create-next-app water-reminder
// pages/index.js
export default function Home() {
return (
<main>
<h1>
Water Drinking Reminder
</h1>
<p>
I want to be reminded under the following e-mail:
</p>
<form
onSubmit={(evt) => {
evt.preventDefault();
const formData = new FormData(evt.target);
const email = formData.get("email");
alert(email);
}}
>
<input
name="email"
type="email"
placeholder="E-Mail"
/>
<button type="submit">
Submit
</button>
</form>
</main>
);
}
// pages/api/setupReminder.js
export default async (req, res) => {
const email = req.body;
console.log(`I'll setup the reminder for ${email}.`);
res.status(200).end();
}
// pages/index.js
onSubmit={(evt) => {
evt.preventDefault();
const formData = new FormData(evt.target);
const email = formData.get("email");
- alert(email);
+ fetch("/api/setupReminder", { method: "POST", body: email });
}}
$ npm install -g quirrel
$ quirrel
🎉 Starting the Quirrel Dev Environment 🎉
// pages/api/queues/reminder.js
import { Queue } from "quirrel/next";
export default Queue(
"api/queues/reminder", // the route it's reachable under
async (recipient) => {
console.log(`Sending an E-Mail to ${recipient}`);
}
);
// pages/api/setupReminder.js
+ import reminderQueue from "./queues/reminder";
// 👆 don't forget this
export default async (req, res) => {
const email = req.body;
- console.log(`I'll setup the reminder for ${email}.`);
+ await reminderQueue.enqueue(
+ email,
+ {
+ id: email,
+ delay: "30min",
+ repeat: {
+ every: "30min",
+ times: 16, // 16 * 30min = 8h
+ },
+ }
+ );
res.status(200).end();
};
id
동일한 이메일 주소에 대한 여러 알림 방지 repeat
작업을 시간당 2회, 8시간 지속delay
초기 지연 시간이 30분 추가되어 첫 번째 작업이 즉시 실행되지 않습니다로컬 Qurrel 인스턴스에 연결하고 모든 걸기 작업을 [마운트] 탭에 표시합니다.
If it doesn't connect, that may be because you're using Safari. Try a different browser instead.
전자 메일을
localhost:3000
에 제출한 양식은 사용자 인터페이스에 새 작업을 추가하고'호출'을 누르면 이 작업을 수행합니다.현재 개발 로그에서 볼 수 있습니다
Sending an E-Mail to XYZ
.이것은 중복된 작업이기 때문에, 16번째 실행될 때까지 즉시 다시 스케줄링할 것이다.
우리가 본 강좌의 마지막 부분을 계속 공부하기 전에: 일어나서 주방에 가서 물 한 잔을 가져와라💧
전자 메일을 연결합시다!
이제 대기열이 작동하기 시작했습니다. 마지막 연결: 이메일!
실행
npm install nodemailer
및 SMTP 설정 코드를 알림 대기열에 추가합니다.// pages/api/queues/reminder.js
import { Queue } from "quirrel/next";
+ import { createTransport } from "nodemailer";
+ const mail = createTransport({
+ host: "smtp.ethereal.email",
+ port: 587,
+ auth: {
+ user: "[email protected]",
+ pass: "Dp5pzSVa52BJwypJQm",
+ },
+ });
...
SMTP 자격 증명이 없으면 프레젠테이션 자격 증명at ethereal.email을 얻을 수 있습니다.그리고
console.log
호출을 전환하고 진정한 이메일을 보내기만 하면 됩니다....
export default Queue(
"api/queues/reminder",
async (recipient) => {
- console.log(`Sending an E-Mail to ${recipient}`);
+ await mail.sendMail({
+ to: recipient,
+ from: "[email protected]",
+ subject: "Remember to drink some water!",
+ text: "..."
+ })
}
);
그렇습니다!현재, 우리의 응용 프로그램은 완전히 정상적으로 작동한다.이것은 아마도 가장 좋은 물 알림 서비스가 아닐 것이다. 그러나 그것은 너 자신의 것이다.
다음은 향상된 아이디어입니다.
다음 지침만 따르십시오.Deploying Quirrel to Vercel
결론
우리는 한 시간도 안 되는 시간에 작업수 알림 시스템을 세웠다.
여기서 완성된 프로젝트를 볼 수 있습니다: quirrel-dev/water-reminder-demo
Beanstalk나 SideKiq 등 유명한 작업 대기열 라이브러리에 경험이 있다면, Qurrel이 얼마나 사용하기 쉬운지 알 수 있습니다.
Qurrel은 유행하는 프레임워크에 사용되는 고도로 통합된 클라이언트 라이브러리와 사용할 수 있는 위탁 관리 솔루션으로 JAMstack 사용자에게 가장 좋은 선택입니다.
만약 네가 직접 키로를 진행하고 싶다면, 마성이공대학의 허가증은 네가 이렇게 하는 것을 허락한다.
Reference
이 문제에 관하여(Next와 식수 알림을 설정합니다.js와 키로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/quirrel/building-a-water-drinking-reminder-with-next-js-and-quirrel-1ckj
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(Next와 식수 알림을 설정합니다.js와 키로), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/quirrel/building-a-water-drinking-reminder-with-next-js-and-quirrel-1ckj텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)