AdonisJS - a 2017 legjobb NodeJS keretrendszere

Körülbelül hat hónappal ezelőtt egy alternatívát kerestem a SailsJS-hez - egy MVC keretrendszert a csomóponthoz. Sajnos a vitorlák nagyon sokat szoptak bizonyos dolgokban - a POST kéréseknél lassúak voltak, nem támogattak sok Postgres funkciót, például tranzakciókat, és nem tartalmaztak néhány egyéb funkciót (például itt leírtak). De a legrosszabb az, hogy az elmúlt három évben nem kapott egyetlen jelentős frissítést.

Tehát elkezdtünk keresni valamit, ahová a nodeJS projektjeinket áthelyezhetjük. Kipróbáltuk a Koa.js-t (de hiányzott túl sok dolog), a Meteor.js-t (nincs igazán szükségünk all-in-one megoldásra, csak API-ra), Loopback-et (túl sok mágia) és még néhányat.

Addig, amíg az AdonisJS-be nem botlottam. Hogy őszinte legyek, annak ellenére, hogy a keretrendszernek 2,5 ezer gitubel kezdődik, nem volt könnyű megtalálni. De azonnal beleszerettem. Megpróbálom megmagyarázni, miért.

Előnyök

1. A mappastruktúrát és a mögöttes logikát tekintve szinte megegyezik a szuper népszerű PHP-keretrendszerrel - a Laravel-rel. És a Laravel jó átgondolt felépítésű, amely lehetővé teszi a dolgok tisztán tartását. Tehát ha valaha is dolgozott vele, akkor gyorsan megtanulja az Adonis-t.

2. Az ORM-et az SQL-adatbázisokkal szem előtt tartva készítik - például a Postgres vagy a MySQL. Hatékony SQL lekérdezéseket hoz létre, és aktív rekord ötletre épül. A lekérdezőkészítőt könnyű megtanulni, és lehetővé teszi számunkra, hogy gyorsan készítsünk egyszerű lekérdezéseket. Például:

const kerékpárok = hozam Bicycle.query (). whereIn ('locationId', locationIds) .with ('lockks'). orderBy ('label', 'asc'). fetch ()

De még akkor is, ha bonyolultabb dolgokra, például áttelepítésre, tranzakciókra, csatlakozásokra, chuckekre vagy teljesen „natív SQL nyelvre” vonatkozó lekérdezésekre van szükség - mindez elérhető és könnyen használható. Ami a MongoDB szerelmeseit illeti - az adonis szintén támogatja.

3. Ez egy praktikus validációs kiterjesztéssel rendelkezik. Megkönnyíti a szabályok megírását, például:

const szabályok = {
  felhasználónév: "szükséges | egyedi: felhasználók",
  e-mail: 'szükséges | e-mail | egyedi: felhasználók',
  jelszó: „szükséges | megerősítve”,
  csoport: 'létezőIn: csoport'
}
const validáció = hozam Validator.validate (userData, User.rules)
if (validation.fails ()) dob új hibákat.érvényesítés (érvényesítés)

Ezek az ellenőrzések lehetnek szinkronak vagy aszinkronok, hozzáférhetnek az adatbázishoz vagy bármire szükségesek. És nagyon egyszerűen meghosszabbítható, például írtunk egy csekket annak bizonyítására, hogy van-e rekord az adatbázisunkban.

4. Csak egy bónusz! Személy szerint szeretem, hogy az Adonis hogyan használja és használja fel a generátor funkciókat. Például:

// Klasszikus más néven spagetti módon
Users.all ((hibás, felhasználók) = = {
  felhasználók.kerékpárok (). letöltés ((hibás, kerékpárok) => {
    res.send ({felhasználók, kerékpárok})
  })
})
// Ígéret útján
hagyjuk, hogy a felhasználók = null
Users.all ()
.then (fetchedUsers => {
  users = fetchedUsers
  visszatér felhasználók.kerékpárok (). fetch ()
})
.után (kerékpárok => {
  res.send ({felhasználók, kerékpárok})
})
// Generátor út (más néven AdonisJS way)
// A hozam megállítja a kód végrehajtását, amíg az async funkció be nem fejeződik
const users = hozam Users.all ()
const kerékpárok = hozam felhasználók.kerékpárok (). fetch ()
res.send ({felhasználók, kerékpárok})

Ez sokkal világosabbá teszi a kódot! Nincs több mellékelt funkció vagy ígéret, csak egyszerű kód, tábláztatás nélkül.

Hátrányok

  1. Nincs alapértelmezett tesztbeállítás. Kód írása teszt nélkül - nagyon naiv fejlesztési mód :-) Tehát időt kellett fektetnünk a saját tesztbeállításunk megvalósításához az Adonis környékén. Upd: a hivatalos tesztbeállítást és útmutatót a következő Adonis 4.0 verzióban mutatjuk be
  2. Mivel nincs sok közreműködő és felhasználó, néha továbbra is megkereshet hibát a központi könyvtárakban. Néhányuk teljesen nyilvánvaló :-)
  3. Annak ellenére, hogy a dokumentumok jók, a közösség még mindig kicsi. A StackOverflow-n nincs sok válasz, és nincs sok oktatóprogram (a hivatalos kivételével).

A következtetés helyett

Az AdonisJS-t az elmúlt hat hónapban gyártjuk. Stabil és gyors. Szeretjük!

Ha modern Node.js keretet keres ES6-val, a Postgres támogatást és jó struktúrát keres - ellenőrizze az Adonis.js

P. S. Legutóbbi projektem - https://pingdisco.com 100% -ban adonisjs, ez egy ingyenes rendelkezésre állási figyelő eszköz. Próbáljon meg ott létrehozni egy fiókot (csak egy mezőt kell kitölteni), és nézd meg, milyen gyors és simán működik.

P. P. S. És ha segítségre van szüksége vagy problémája van a kerettel kapcsolatban, akkor ne habozzon üzenetet küldeni nekem a Codementorról. Bemutatókkal is foglalkozom, ahol megmutathatom az Adonis alapjait és néhány remek csapdáját.