AdonisJS - 2017. aasta parim NodeJS-i raamistik

Umbes kuus kuud tagasi otsisin SailsJS-i jaoks alternatiivi - sõlme MVC raamistikku. Kahjuks imetas Sails mõnes asjas üsna palju - see oli POST-i päringute osas aeglane, see ei toetanud paljusid Postgres-funktsioone, näiteks tehinguid, ja sellel polnud veel mõnda muud funktsiooni (näiteks siin kirjeldatud). Kuid kõige hullem on see, et ta ei saanud viimase kolme aasta jooksul ühtegi suurt värskendust.

Niisiis hakkasime otsima midagi, kuhu oma nodeJS projektid viia. Oleme proovinud Koa.js (kuid sellel polnud liiga palju asju), Meteor.js (meil pole tegelikult vaja kõik-ühes-lahendust, ainult API-d), Loopbacki (liiga palju maagiat) ja veel mõnda muud.

Kuni komistasin AdonisJS-i. Ausalt öeldes, kuigi raamistikul on githubis käivitatud 2,5k, ei olnud seda lihtne leida. Kuid ma tundsin seda kohe armununa. Püüan selgitada, miks.

Plussid

1. Vaadates kaustade ülesehitust ja loogikat, on see peaaegu identne ülipopulaarse PHP-raamistikuga - Laravel. Ja Laravel on hea läbimõeldud struktuur, mis võimaldab teil hoida asjad selged. Nii et kui olete sellega kunagi varem töötanud, õpite Adonise kiiresti selgeks.

2. Selle ORM on loodud SQL-andmebaase silmas pidades - näiteks Postgres või MySQL. See loob tõhusad SQL-päringud ja põhineb aktiivsel kirjeideel. Selle päringu koostajat on lihtne õppida ja see võimaldab meil kiiresti luua lihtsaid päringuid. Näiteks:

const jalgrattad = saaki Bicycle.query (). whereIn ('locationId', locationIds) .with ('lukud'). orderBy ('silt', 'asc'). fetch ()

Kuid ka siis, kui vajame keerulisemaid asju, näiteks rändeid, tehinguid, liitumisi, tšekke või täiesti „pärismaise SQL-i keele” päringuid - see on kõik olemas ja seda on lihtne kasutada. Mis puutub MongoDB-i austajatesse - siis toetab seda ka adonis.

3. Sellel on mugav valideerimislaiend. Muudab reeglite kirjutamise hõlpsaks, näiteks:

const reeglid = {
  kasutajanimi: 'vajalik | kordumatu: kasutajad',
  e-post: 'kohustuslik | e-post | ainulaadne: kasutajad',
  parool: 'kohustuslik | kinnitatud',
  rühm: 'on olemasIn: rühm'
}
const valideerimine = saadi Validator.validate (userData, User.rules)
if (valideerimine.fails ()) viskab uued vead.Valideerimine (valideerimine)

Need kontrollid võivad olla nii sünkroonsed kui ka asünkroonsed, pääsevad juurde andmebaasidele või muule vajalikule. Ja seda saab väga hõlpsalt laiendada, näiteks oleme kirjutanud kontrolli, et tõestada, kas kirje on meie andmebaasis olemas.

4. Lihtsalt boonus! Mulle isiklikult meeldib, kuidas Adonis generaatori funktsioone kasutab ja kasutab. Näiteks:

// Klassikaline aka spagetid
Users.all ((eksinud, kasutajad) => {
  kasutajad.jalgrattad (). tõmmake ((eksige, jalgrattad) => {
    res.send ({kasutajad, jalgrattad})
  })
})
// Lubadusviis
lase kasutajatel = null
Kasutajad.all ()
. seejärel (fetchedUsers => {
  kasutajad = fetchedUsers
  naasta kasutajad.jalgrattad (). tõmmata ()
})
. siis (jalgrattad => {
  res.send ({kasutajad, jalgrattad})
})
// Generaatori viis (teise nimega AdonisJS way)
// Saagimine peatab koodi täitmise, kuni asünkroonimisfunktsioon on lõpetatud
const kasutajad = saak Kasutajad.all ()
const jalgrattad = saagi kasutajad.jalgrattad (). tõmmake ()
res.send ({kasutajad, jalgrattad})

See muudab koodi palju selgemaks! Enam pole suletud funktsioone ega lubadusi, vaid lihtne kood ilma tabelita.

Miinused

  1. Vaiketesti pole seadistatud. Koodi kirjutamine ilma testideta - on väga naiivne arenemisviis :-) Seega pidime investeerima aega oma testihäälestuse rakendamisse Adonise ümbruses. Upd: järgmises Adonis 4.0 tutvustatakse ametlikku testi seadistamist ja juhendamist
  2. Kuna kaastöötajaid ja kasutajaid pole palju, võite mõnikord tuumikteekides siiski vea leida. Mõned neist on üsna ilmsed :-)
  3. Ehkki dokumendid on head, on kogukond siiski väike. StackOverflow-l pole palju vastuseid ja pole ka palju õpetusi (v.a ametlik)

Järelduse asemel

Me kasutame AdonisJSi tootmises viimase kuue kuu jooksul. See on stabiilne ja kiire. Me armastame seda!

Kui otsite kaasaegset ES6-ga Node.js-raamistikku, Postgrese tuge ja head ülesehitust - vaadake Adonis.js

P. S. Minu uusim projekt - https://pingdisco.com on 100% adonisjs, see on tasuta tööaja jälgimise tööriist. Proovige seal kontot luua (täitmiseks kulub ainult üks väli) ja vaadake, kui kiire ja sujuv see on.

P. P. S. Ja kui vajate abi või teil on raamistikuga probleeme, siis ärge kõhelge, andke mulle Codementori kohta sõnum. Teen ka õpetussessioone, kus saan teile näidata Adonise põhitõdesid ja mõnda lahedat hakat.