Küberturbe dilemmad: Andmete lekkimine
Jõulueelne kiire on täies hoos. Oma lähedastele kingitusi otsides on inimesed üha enam valmis "tormama" veebipoodidesse.
Remix on täisfunktsionaalne veebiraamistik, mis keskendub veebi põhialustele ja kaasaegsele UX-ile.
Jah, see on veel üks JS raamistik, kuid lihtsalt jääda natuke kauem, sest see raamistik on tehtud Michael Jackson ja Ryan Florence nutikad poisid taga React marsruuter. Loodan, et sain teie tähelepanu, nii et vaatame, mis on hea, et Remix raamistik.

Remix on serveripoolne raamistik, mis on ehitatud peale Web Fetch API ja React marsruuter, igal marsruudil on remixis kolm peamist ekspordikohta a laadur, an tegevus ja vaikimisi komponent eksport. Veebileht laadur funktsiooni kutsutakse serveris enne renderdamist, et anda andmeid marsruudile, siis on funktsiooni tegevus funktsioon vastutab andmete mutatsiooni eest, on vaikimisi eksporditav komponent see, mida sellel marsruudil renderdatakse. Veebileht laadur ja tegevus funktsioone käivitatakse ainult serveri poolel ja need peavad tagastama Vastus objektile, siis vaikimisi eksport toimub nii serveri- kui ka kliendipoolel.
Uue Remixi initsialiseerimiseks projekt:
npx create-remix@latest
TÄHELEPANU: vali "Lihtsalt põhitõed" ja seejärel "Remix App Server", kui seda küsitakse.
cd [mis iganes nime te projektile andsite]
npm run dev
```
Avaneb http://localhost:3000. create-remix käsk annab teile järgmise struktuuriga stardimalli:

app kaust sisaldab kõiki teie rakenduse marsruute ja kood.app/entry.client.jsx on esimene osa koodist, mis käivitub brauseris ja mida kasutatakse selleks, et saavutada hüdraat React komponendid.app/entry.server.jsx on esimene osa koodist, mis käivitub, kui päring jõuab serverisse, see fail muudab meie React rakenduse stringiks/vooluks ja saadab selle meie vastuseks kliendile.app/root.jsx on koht, kuhu läheb juurkomponent.app/routes/ on koht, kuhu kõik teie marsruudimoodulid lähevad, remix kasutab failisüsteemil põhinevat marsruutimist.avalik kausta lähevad teie staatilised varad (pildid/fonid jne).remix.config.js on koht, kus saab määrata remix-konfiguratsiooni.Kontrollime login.jsx marsruudi näide Remixi rakenduse sees:
import { redirect, json, Form, useActionData, useTransition } from 'remix';
import { isLoggedIn, verifyLogin } from '../auth';
export const loader = async ({ request }) => {
if (await isLoggedIn(request)) {
return redirect('/dashboard');
}
return json({ success: true });
};
export const action = async ({ request }) => {
const formData = await request.formData();
const values = {
email: formData.get('email') ?? '',
password: formData.get('password') ?? '',
};
const errors = await verifyLogin(values);
if (errors) {
return json({ errors }, { status: 400 });
}
return redirect('/dashboard');
};
export default function LoginRoute() {
const actionData = useActionData();
const transition = useTransition();
const isSubmitting = transition.state === 'submitting';
return (
Email
{actionData?.errors?.email &&
{actionData.errors.email}
}
<div>
<label htmlFor="password">Password</label>
<input id="password" name="password" type="password" />
{actionData?.errors?.password && (
<div>{actionData.errors.password}</div>
)}
</div>
<div>
<button type="submit" disabled={isSubmitting}>
{`Login ${isSubmitting ? '...' : ''}`}
</button>
</div>
</Form>
);
}
```
Esimene asi, mis siin toimub, on laadur funktsioon, mis kontrollib, kas kasutaja on juba sisse logitud koos isLoggedIn funktsioon ja ümbersuunata teda /dashboard marsruuti, kui mitte, siis tagastab ta lihtsalt { success: true } vastus, siis kuvatakse sisselogimisleht.
The LoginRoute renderdab vormi, millel on e-posti ja salasõna sisendid ning nupp, nagu näete, ei ole ühtegi riik muutujad ega onSubmit sündmuse käitaja meie komponendis, siis sellepärast, et remixis saab iga marsruut eksportida tegevus ja kui vorm esitatakse koos POST meetodi toimingut kutsutakse välja ja käsitletakse seda sündmust.
Kui vorm esitatakse tegevus funktsioon saab
FormData alates Taotlus objekt const formData = await request.formData(), siis me konstrueerime väärtused objekt koos e-posti ja parooli omadustega, on formData.get('email') otsib esimest sobivat välja meie vormi sees, millel on tähis name="email" omadus ja tagastab selle väärtuse. Me kontrollime, kas volikirjaandmed on õiged koos verifyLogin funktsiooni, siin võiksite kasutada mõnda oma lemmik JS skeemi valideerimise raamatukogu ja teha Tooge oma kohandatud taustsüsteemi, et kontrollida, kas sisselogimisandmed on õiged, kui jah, siis me ümbersuunata kasutajale, et /dashboard marsruudi, vastasel juhul tagastame json vastus koos vigade objekti ja HTTP staatuse kood 400... useActionData konks tagastab selle vigade objekti, kui see on olemas ja me tinglikult renderime veateate nagu in {actionData?.errors?.email && <div>{actionData.errors.email}</div>}.
The useTransition konks ütleb meile kõike lehekülje ülemineku seisundi kohta, kusjuures isSubmitting muutuja kontrollime, millal toimub esitamine, kui on olemas me keelata nuppu submit ja näita Login.... selle asemel, et Logi sisse, võiksime kasutajale näidata ka laadimiskeerajat või muud märki.
The json funktsioon on lihtsalt otsetee, et luua application/json vastusobjektid. Veebileht useLoaderData konks tagastab JSON-parsitud andmed teie marsruudilt laadur... useActionData tagastab marsruudi tegevus analüüsitud andmed.
Iga marsruut võib eksportida ka meta funktsioon, mis vastutab Html-dokumendi metatagide seadmise eest, nii saate määrata pealkiri ja kirjeldus iga marsruudi jaoks ja lisage kõik soovitud Open Graph või muud metatähed.
eksport const meta = () => {
const title = 'Minu vinge lehekülg';
const description = 'Super vinge lehekülg';
return {
charset: 'utf-8',
title,
description,
keywords: 'Remix,Awesome',
'twitter:image': 'https://awesome-page.com/awesome.png',
'twitter:card': 'summarylargeimage',
'twitter:creator': '@awesome',
'twitter:site': '@awesome',
'twitter:title': pealkiri,
'twitter:description': description,
};
};
export default function AwesomeRoute() {
return
Awesome Route
;
}
```
Me oleme just käsitlenud jäämäe tippu Remixi kohta, seal on veel nii palju teada, siin on mõned kasulikud lingid:
Mis on suurepärane Remix on saada paremaks sellega saad paremini veebi põhialuste, nagu olete näinud palju selle artikli lingid viitavad Mozilla dokumendid, seda tähendabki see, et Remix on keskendunud veebi põhialustele, see kasutab veebi APIsid nagu Response ja Request objekt, et pakkuda kasutajatele suurepärast UX-i pluss saate endiselt kasutada kõiki oma React tavapärast tehnikat ja lemmikraamatukogusid.
Me ei rääkinud selles artiklis kõigist Remixi poolt pakutavatest suurtest funktsioonidest nagu Sisestatud marsruudid, Veapiirid, Remix virnad kuid see artikkel peaks siiski andma teile hea ülevaate Remixi filosoofiast.
