AdonisJS - najlepší rámec NodeJS roku 2017

Asi pred šiestimi mesiacmi som hľadal alternatívu pre SailsJS - rámec MVC pre uzol. Bohužiaľ, Sails v niektorých veciach veľa nasal - na požiadavkách POST to bolo pomalé, nepodporovalo veľa funkcií Postgresu, ako sú transakcie, a chýbalo mu niekoľko ďalších funkcií (napríklad tu popísané). Najhoršie z toho je, že za posledné tri roky nedostala jednu významnú aktualizáciu.

Začali sme teda hľadať niečo, do ktorého by sme mohli presunúť naše projekty nodeJS. Skúsili sme Koa.js (ale chýbalo mu to príliš veľa vecí), Meteor.js (nepotrebujeme riešenie typu všetko v jednom, iba API), Loopback (príliš veľa mágie) a niekoľko ďalších.

Kým som narazil do AdonisJS. Aby som bol úprimný, hoci rámec má na githube 2,5k, nebolo ľahké ho nájsť. Ale okamžite som sa do toho zamiloval. Pokúsim sa vysvetliť prečo.

Pros

1. Pri pohľade na štruktúru priečinkov a logiku za nimi je takmer identická so super populárnym rámcom PHP - Laravel. A Laravel má dobrú premyslenú štruktúru, ktorá vám umožňuje udržiavať veci v poriadku. Ak ste s tým niekedy pracovali, naučíte sa Adonis naozaj rýchlo.

2. Jeho ORM je vyrobený s ohľadom na SQL databázy - napríklad Postgres alebo MySQL. Vytvára efektívne dotazy SQL a je založená na myšlienke aktívneho záznamu. Jeho nástroj na tvorbu dotazov sa ľahko učí a umožňuje nám rýchlo vytvárať jednoduché otázky. Napríklad:

const bicykle = výnos Bicycle.query (). whereIn ('locationId', locationIds) .with ('locks'). orderBy ('label', 'asc'). fetch ()

Ale aj keď potrebujeme zložitejšie veci, ako sú migrácie, transakcie, spojenia, skľučovadlá alebo úplne otázky týkajúce sa „rodného jazyka SQL“ - všetko je jednoduché a ľahko použiteľné. Pokiaľ ide o milovníkov MongoDB - Adonis to tiež podporuje.

3. Má užitočné rozšírenie validácie. Uľahčuje písanie pravidiel, napríklad:

const rules = {
  username: 'povinné | jedinečné: users',
  email: 'povinné | email | jedinečné: users',
  heslo: „požadované | potvrdené“,
  skupina: 'existujeIn: skupina'
}
const validation = výnos Validator.validate (userData, User.rules)
if (validation.fails ()) vyvolá nové chyby.Validácia (validácia)

Tieto kontroly môžu byť synchrónne alebo asynchrónne, môžu pristupovať k databáze alebo podľa potreby. A dá sa veľmi ľahko rozšíriť, napríklad sme napísali kontrolu, aby sme dokázali, či v našej databáze existuje záznam.

4. Len bonus! Osobne sa mi páči, ako Adonis využíva a využíva funkcie generátora. Napríklad:

// Klasická alias špagetová cesta
Users.all ((err, users) => {
  users.bicycles (). načítať ((err, bicykle) => {
    res.send ({users, bicykle})
  })
})
// Sľubná cesta
nechať používateľov = null
Users.all ()
.then (fetchedUsers => {
  users = fetchedUsers
  návrat users.bicycles () .fetch ()
})
.tak (bicykle => {
  res.send ({users, bicykle})
})
// Generátorový spôsob (známy tiež ako AdonisJS)
// Výnos pozastaví vykonávanie kódu, kým sa neskončí funkcia async
const users = výnos Users.all ()
const bicykle = výnos users.bicycles (). načítať ()
res.send ({users, bicykle})

Vďaka tomu je kód oveľa jasnejší! Žiadne ďalšie uzavreté funkcie alebo sľuby, iba jednoduchý kód bez tabuľky.

Zápory

  1. Neexistuje žiadne predvolené nastavenie testu. Písanie kódu bez testov - je veľmi naivný spôsob rozvoja :-) Takže sme museli investovať čas do implementácie vlastných testovacích nastavení okolo Adonis. Aktualizácia: oficiálne nastavenie testu a výučba budú predstavené v nasledujúcom Adonis 4.0
  2. Pretože nie je veľa prispievateľov a používateľov, niekedy môžete v hlavných knižniciach zachytiť chybu. Niektoré z nich sú celkom zrejmé :-)
  3. Aj keď sú dokumenty dobré, komunita je stále malá. Na StackOverflow nie je veľa odpovedí a nie je veľa tutoriálov (okrem oficiálnych)

Namiesto záveru

Používame AdonisJS vo výrobe za posledných šesť mesiacov. Je stabilný a rýchly. Milujeme to!

Ak hľadáte moderný rámec Node.js s ES6, podporu Postgres a dobrú štruktúru - pozrite si Adonis.js

P. S. Môj posledný projekt - https://pingdisco.com je 100% adonisjs, je to bezplatný nástroj na sledovanie dostupnosti. Skúste si tam vytvoriť účet (vyplniť iba jedno pole) a uvidíte, ako rýchlo a plynulo to je.

P. P. S. A ak potrebujete pomoc alebo máte problémy s rámcom, neváhajte a dajte mi správu o Codementore. Taktiež robím tutoriály, kde vám môžem ukázať základy a pár skvelých hackov Adonisa.