AdonisJS - najboljši okvir NodeJS leta 2017

Pred približno pol leta sem iskal alternativo za SailsJS - MVC Framework za vozlišče. Žal je Sails v nekaterih stvareh zelo zaničil - počasen je na POST zahteve, ni podpiral številnih Postgres funkcij, kot so transakcije in manjkal je še nekaj drugih funkcij (na primer opisane tukaj). Najhuje pa je, da v zadnjih treh letih ni dobil niti ene same večje posodobitve.

Tako smo začeli iskati nekaj, na kar bomo premaknili svoje nodeJS projekte. Poskusili smo Koa.js (vendar je bilo premalo stvari), Meteor.js (resnično ne potrebujemo rešitve vse v enem, samo API), Loopback (preveč čarovništva) in še nekaj.

Dokler nisem naletel na AdonisJS. Iskreno povedano, čeprav ima ogrodje 2,5k zagon 2,5k, tega ni bilo enostavno najti. A sem se takoj počutil zaljubljen vanjo. Poskušal bom razložiti, zakaj.

Prednosti

1. Če pogledamo strukturo mape in logiko, ki je zadaj, je skoraj enak super priljubljenemu PHP-okviru - Laravel. Laravel ima dobro premišljeno strukturo, ki vam omogoča, da stvari ohranite jasne. Če ste kdaj sodelovali z njim, se boste Adonisa naučili resnično hitro.

2. Njegov ORM je narejen z bazami podatkov SQL - na primer Postgres ali MySQL. Ustvari učinkovite SQL poizvedbe in temelji na ideji o aktivnem zapisu. Njegova graditelja poizvedb je enostavno učiti in nam omogoča, da hitro sestavimo preproste poizvedbe. Na primer:

const koles = donos Bicycle.query (). kjerIn ('locationId', locationIds). z ('ključavnice'). orderBy ('label', 'asc'). fetch ()

Toda tudi ko potrebujemo bolj zapletene stvari, kot so selitve, transakcije, združevanja, vpenjanja ali popolnoma poizvedbe »maternega jezika SQL« - je vse tam in enostavno za uporabo. Kar se tiče ljubiteljev MongoDB - adonis to tudi podpira.

3. Ima priročen podaljšek za potrjevanje. Olajša pisanje pravil, na primer:

const pravila = {
  uporabniško ime: 'obvezno | edinstveno: uporabniki',
  email: 'obvezno | email | edinstveno: uporabniki',
  geslo: 'obvezno | potrjeno',
  skupina: 'obstajaIn: skupina'
}
const validation = donos Validator.validate (userData, User.rules)
če (validation.fails ()) vrže nove napake. Validacija (preverjanje)

Ti pregledi so lahko sinhroni ali asinhroni, imajo dostop do baze podatkov ali kakršno koli potrebno. In zelo enostavno ga je mogoče razširiti, na primer napisali smo ček in tako dokazali, ali v naši bazi podatkov obstaja zapis.

4. Samo bonus! Osebno mi je všeč, kako Adonis uporablja in uporablja funkcije generatorja. Na primer:

// Klasičen aka špageti način
Users.all ((napaka, uporabniki) => {
  users.bicycles (). fetch ((napaka, kolesa) => {
    res.send ({uporabniki, kolesa})
  })
})
// Obljubi način
naj bodo uporabniki = null
Users.all ()
.tem (fetchedUsers => {
  uporabniki = pridobljeni uporabniki
  vrni users.bicycles (). fetch ()
})
.tem (kolesa => {
  res.send ({uporabniki, kolesa})
})
// Generator način (aka način AdonisJS)
// Dajanje zaustavi izvajanje kode, dokler funkcija asinhronizacije ni končana
const uporabniki = donos Users.all ()
const koles = dovoljeni uporabniki.bicycles (). fetch ()
res.send ({uporabniki, kolesa})

Koda je bistveno bolj jasna! Ni več zaprtih funkcij ali obljub, le preprosta koda brez tabulacije.

Slabosti

  1. Privzeta nastavitev testa ni. Pisanje kode brez testov - je zelo naiven način razvoja :-) Zato smo morali vložiti čas v izvajanje lastne testne nastavitve okoli Adonisa. Upd: v naslednjem Adonisu 4.0 bo predstavljena uradna namestitev in vadnica
  2. Ker prispevkov in uporabnikov ni veliko, včasih lahko še vedno ujamete napako v osnovnih knjižnicah. Nekateri od njih so povsem očitni :-)
  3. Čeprav so dokumenti dobri, je skupnost še vedno majhna. Na StackOverflow ni veliko odgovorov in ni veliko vadnic (razen uradnih)

Namesto zaključka

V proizvodnji zadnjih šest mesecev uporabljamo AdonisJS. Je stabilen in hiter. Všeč nam je!

Če iščete sodoben okvir Node.js z ES6, podporo Postgres in dobro strukturo - preverite Adonis.js

P. S. Moj zadnji projekt - https://pingdisco.com je 100% adonisjs, je brezplačno orodje za spremljanje uptime. Poskusite tam ustvariti račun (zapolnite samo eno polje) in se prepričajte, kako hiter in gladek je.

P. P. S. In če potrebujete pomoč ali imate težave z ogrodjem, ne oklevajte in mi pošljite sporočilo o Codementorju. Delam tudi vaje na vajah, kjer vam lahko pokažem osnove in nekaj kul adutov Adonisa.