„AdonisJS“ - geriausia 2017 m. „NodeJS“ sistema

Maždaug prieš šešis mėnesius ieškojau „SailsJS“ alternatyvos - mazgo „MVC Framework“. Deja, „Burės“ kai kuriuose dalykuose išsiurbė gana daug - POST užklausose jis buvo lėtas, nepalaikė daugelio „Postgres“ funkcijų, tokių kaip operacijos, ir neturėjo kelių kitų funkcijų (pavyzdžiui, aprašytų čia). Tačiau blogiausia tai, kad per pastaruosius trejus metus jis negavo nė vieno esminio atnaujinimo.

Taigi mes pradėjome kažko ieškoti, kad perkeltume į „nodeJS“ projektus. Išbandėme „Koa.js“ (bet trūko per daug dalykų), „Meteor.js“ (mums tikrai nereikia „viskas viename“ sprendimo, tik API), „Loopback“ (per daug magijos) ir dar keletą.

Kol aš neužkliūdavau prie AdonisJS. Tiesą sakant, nors sistema turi 2,5k paleidimą iš github, ją rasti nebuvo lengva. Bet aš iškart pajutau meilę. Pabandysiu paaiškinti kodėl.

Argumentai už

1. Žiūrint iš aplanko struktūros ir logikos, jis yra beveik identiškas ypač populiariam PHP rėmui - Laravel. „Laravel“ turi gerai apgalvotą struktūrą, leidžiančią viską išlaikyti aiškų. Taigi, jei kada nors dirbote su juo, greitai išmoksite „Adonis“.

2. Jos ORM sukurtas atsižvelgiant į SQL duomenų bazes - tokias kaip „Postgres“ ar „MySQL“. Tai sukuria efektyvias SQL užklausas ir yra paremta aktyvaus įrašo idėja. Jos užklausų kūrimo priemonę lengva išmokti ir ji leidžia greitai sukurti paprastas užklausas. Pavyzdžiui:

„const“ dviračiai = išeikite „Bicycle.query“ ().

Bet net tada, kai mums reikia sudėtingesnių dalykų, tokių kaip migracija, operacijos, prisijungimai, rinkiniai ar visiškai „gimtosios SQL kalbos“ užklausos - viskas čia ir paprasta naudoti. Kalbant apie „MongoDB“ mėgėjus - tai taip pat palaiko „adonis“.

3. Jis turi patogų patvirtinimo plėtinį. Palengvina taisyklių rašymą, pavyzdžiui:

const taisyklės = {
  vartotojo vardas: „būtinas | unikalus: vartotojai“,
  el. paštas: „būtinas | el. paštas | unikalus: vartotojai“,
  slaptažodis: 'būtinas | patvirtintas',
  grupė: 'egzistuojaIn: grupė'
}
const validation = išeiga Validator.validate („userData“, „User.rules“)
if (validation.fails ()) išmeta naujas klaidas.Validation (validation)

Šie patikrinimai gali būti tiek sinchroniniai, tiek asinchroniniai, jie gali pasiekti duomenų bazę ar bet kurį reikalingą. Tai galima labai lengvai išplėsti, pavyzdžiui, mes parašėme čekį, kad įrodytume, ar įrašas yra mūsų duomenų bazėje.

4. Tiesiog premija! Asmeniškai man patinka, kaip „Adonis“ naudoja ir naudoja generatoriaus funkcijas. Pavyzdžiui:

// Klasikinis aka spagečių būdas
Users.all ((klaidingai, vartotojai) => {
  vartotojai. dviračiai (). atsisiųsti ((suklysti, dviračiai) => {
    res.send ({vartotojai, dviračiai})
  })
})
// Pažadėjimo būdas
tegul vartotojai = niekiniai
Users.all ()
. Tada („fetchedUsers => {
  vartotojai = „fetchedUsers“
  grąžinti vartotojams dviračius (). atsisiųsti ()
})
.tad (dviračiai => {
  res.send ({vartotojai, dviračiai})
})
// Generator būdas (dar žinomas kaip AdonisJS way)
// Pateikimas pristabdo kodo vykdymą, kol async funkcija bus baigta
const users = išeiga Users.all ()
const dviračiai = duok vartotojams. dviračiai (). fetch ()
res.send ({vartotojai, dviračiai})

Kodas tampa daug aiškesnis! Daugiau nebereikia funkcijų ar pažadų, tik paprastas kodas be lentelių.

Minusai

  1. Nėra numatytojo bandymo nustatymo. Kodo rašymas be testų - yra labai naivus tobulėjimo būdas :-) Taigi mes turėjome skirti laiko savo testo nustatymui aplink Adonis. Aukštyn: oficiali testo sąranka ir vadovėlis bus pristatyti šiame „Adonis 4.0“
  2. Kadangi bendraautorių ir vartotojų nėra daug, kartais vis tiek galite rasti klaidą pagrindinėse bibliotekose. Kai kurie iš jų yra gana akivaizdūs :-)
  3. Nors dokumentai yra geri, bendruomenė vis dar nedidelė. „StackOverflow“ nėra daug atsakymų ir nėra daug mokymų (išskyrus oficialųjį)

Vietoj išvados

Gaminame „AdonisJS“ pastaruosius šešis mėnesius. Jis stabilus ir greitas. Mes mylim tai!

Jei ieškote modernios „Node.js“ sistemos su ES6, „Postgres“ palaikymas ir gera struktūra - patikrinkite Adonis.js

P. S. Mano naujausias projektas - https://pingdisco.com yra 100% adonisjs, tai yra nemokamas veikimo laiko stebėjimo įrankis. Pabandykite sukurti paskyrą ten (užpildyti reikia tik vieną lauką) ir pažiūrėkite, kokia greita ir sklandi ji yra.

P. P. S. Ir jei jums reikia pagalbos ar turite problemų dėl sistemos, nedvejodami duokite man žinią apie „Codementor“. Aš taip pat vedu kursus, kuriuose galiu parodyti jums pagrindus ir keletą nuostabių „Adonis“ nulaužimų.