Kuidas kirjutada võimsaid skeeme JavaScripti

Tutvustame skmi, funktsionaalset ja väga hõlpsasti komplekteeritavat teeki skeemide loomiseks JavaScripti ja Node.js-s

Olen HTML, CSS ja JavaScriptiga töötanud alates 2002. aastast. Esimest korda vajasin mingisugust skeemi JavaScripti vaid mõni aasta tagasi.

Pärast paljude erinevate teekide kasutamist ja isegi ühe ja teise autorite loomist otsustasin luua schm-i. Selle tulemus on kogu minu kogemus JavaScripti skeemidega.

Mis on schm?

schm on npm-pakettide rühm, mis aitab arendajatel skeemidega JavaScripti ja Node.js-des toime tulla.

See on väga inspireeritud Mongoose skeemidest. Tegelikult on need nii sarnased, et saate kasutada schmparameetreid Mongoose skeemides ja vastupidi. See pole siiski MongoDB spetsiifiline. Saate seda kasutada JavaScripti jaoks kõigeks.

Milliseid probleeme schm lahendab?

? Vormiväärtuste sõelumine ja valideerimine

Kliendis saate skeemide abil HTML-vormide mudeleid määratleda. See hõlbustab väärtuste teisendamist ja kinnitamist. Samuti, kui kasutate serveris Node.js, saate kasutada sama skeemi. Tulemuseks on järjekindel käitumine kliendi ja serveri valideerimise vahel.

? Päringustringi sõelumine ja valideerimine

Kaaluge järgmist Päringustringi: /?term=John&page=2&limit=10. Kombineerides selliseid pakette nagu schm-koa, schm-express ja / või schm-mongo, saate hõlpsalt sõeluda ja kinnitada päring stringe otsinguterminite ja lehitsemisega.

☊ Kliendi ja serveri vaheline suhtlus

Kui teil on rakendus, mis tarbib ressursse näiteks REST API-st, saate skeemide abil määratleda kliendis objektistruktuuri, mille klient serverilt eeldab saada. Kui serveris midagi muutub (näiteks atribuudid on ümber nimetatud), saate oma skeemi lihtsalt värskendada, nii et kogu teie rakendus töötab edasi.

Skeemi loomine

Lihtne skeem on lihtsalt võtmete ja tüüpide kaart:

See on sama mis typeatribuudi kasutamine:

Skeem võib olla ka kaart võtmete ja vaikeväärtuste vahel. Tüübid järeldatakse automaatselt:

See on samaväärne järgmise toiminguga:

Skeemide kirjutamise kohta lisateabe saamiseks vaadake Mongoose skeeme.

Väärtuste sõelumine

Pärast skeemi määratlemist saate seda kasutada väärtuste sõelumiseks. See protsess teisendab väärtused õigeks tüübiks ja rakendab ka teisi skeemis määratletud parsereid. Need on saadaval parsereid: type, default, set, get, trim, uppercase, lowercase.

Väljund on umbes selline:

{ name: "HAZ", birthdate: Tue Apr 10 1990 00:00:00 GMT,}

Väärtuste kinnitamine

Nii nagu Mongoose skeemides, saate ka skeemides määratleda valideerimisreeglid. Need on saadaval kontrollijaid: validate, required, match, enum, max, min, maxlength, minlength.

Skeemi laiendades saate luua ka kohandatud parsereid ja valideerijaid. Me räägime sellest hiljem selles artiklis.

Valideerimisviga on vaikimisi vigu kirjeldavate objektide massiiv.

[ { message: "age must be greater than or equal 18", min: 18, param: "age", validator: "min", value: 17, }]

Kui valideerimine möödub, tagastab see parsitud väärtused, nagu ka parse().

Mitme skeemi koostamine

Oletame, et teil eraldi skeeme kirjeldab body, identityja muid asju, ja tahan kirjutada neid ehitada humanskeemi. See on nii lihtne kui see kõlab:

Teine võimalus skeemide koostamiseks on pesitsemine. Skeemi saab kasutada typeteise skeemi sees:

Skeemide pikendamine

See on see osa, kus schmtõeliselt särab. Saate lisada kohandatud parsereid ja valideerijaid või isegi asendada skeemirühmade loomisega vaikekäitumise parseja validatemeetodid.

Skeemi rühm on funktsioon, mis võtab eelmise skeemi ainsa argument. Pealegi eelmine params, parsersja validatorskujutlusfiguuriks objekti on mergemeetod, mis on kasulik skeemi rühmas ülesanded ühendada uut funktsionaalsust eelmise skeeme.

Ülaltoodud jupi väljund on umbes selline:

{ name: "Haz!!!", age: 27,}

Kui soovite minna kaugemale ja saada lisateavet kohandatud parserite loomise kohta, vaadake, kuidas siin parserid tuumikukogu sisse kirjutatakse.

Skeemide laiendamisega saame luua mitut liiki asju. Nii kirjutatakse enamik schmsatelliitraamatukogudest, näiteks schm-translate, schm-computed ja schm-mongo.

Räägime nüüd ühest neist.

Väärtuste võtmete ümbernimetamine

schm-translate on üks lihtsamaid, kuid võimsamaid satelliitraamatukogusid schm. See on paar rohkem kui 10 koodirida, mis on kokku pakitud üheks funktsiooniks, mis võimaldab teil väärtuste võtmeid oma skeemivõtmetesse tõlkida.

Oletame, et töötate veebirakendusega, mis tarbib REST API ressursse. Järsku muudavad arendajad API-s asju, mis paneb vastuskeha tagastama veidi teistsuguse mudeli kui see, mida klient ootas. Atribuudi asemel emailtagastab see nüüd massiivi emails.

Tõenäoliselt muudab see teie rakenduse rikkis. Kui teil pole selle objekti käitamiseks skeemi ega muud tsentraliseeritud viisi, peate serveri muudatustele vastamiseks värskendama rakenduse kõiki osi.

Kasutades schmja schm-translatesaab selle lahendada, muutes paar koodi rida ainult ühes kohas:

Väljund on täpselt see, mida teie rakendus enne muudatust ootas:

{ name: "Haz", email: "[email protected]",}

Kõigi pakettide loendi kuvamiseks klõpsake siin

Kuidas see erineb teistest skeemiraamatukogudest?

Levinud küsimus on erinevus schmraamatukogude, näiteks Joi ja ajv vahel (mis järgib JSON Schema spetsifikatsioone).

Võrreldes ajv, schmei järgi konkreetseid spetsifikatsioone. Selle asemel püüab see jäljendada Mongoose Schema API-d. Isegi kui ajvsellel on mõned sõelumisfunktsioonid, piirduvad need vaikeväärtuste ja tüübi sunniga.

Aastal schmon skeemil põhinevate väärtuste parsimise võime see, mis võimaldab päringustringi muundada näiteks MongoDB päringuks.

Nagu öeldud, mõlemad Joija nendega ajvsaab kombineerida schm. Saate seda hõlpsalt laiendada, et kasutada mõnda muud valideerimismeetodit.

Täname, et lugesite seda!

Kui teile meeldib ja see on kasulik, saate oma toetuse näitamiseks teha järgmist.

  • Lööma plaksutama? selle artikli nupp paar korda (kuni 50)
  • Pange täht ⭐️ GitHubis: //github.com/installohaz/schm
  • Jälgi mind GitHubis: //github.com/installohaz
  • Jälgige mind Twitteris: //twitter.com/installohaz