Melyik JavaScript ORM-et kell használni 2018-ban?

MEGJEGYZÉS: 2018. május: Olvassa el a TypeORM-tól a LoopBack-ig: visszatekintésfrissített perspektíva érdekében!

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

Ez a cikk áttekinti az Object Relational Mapping (ORM) megoldásokat a JavaScript ökoszisztémában, és meghatározza az ideális megoldást a speciális követelmények alapján.

Mi az ORM, és miért olyan fontos?

Az ORM megoldások hasznosak az adatközpontú API fejlesztés megkönnyítésére. A felhasználóknak konkrét igényeik vannak, amelyek vezérlik az alkalmazás adatmodelljét. A korábbi fejlesztések során ezt az adatarchitektúrát általában adatbázis-szkriptek, például SQL-szkriptek segítségével valósítják meg és verzióvezérelték. Ezután egy külön könyvtárat használnak a kiszolgáló alkalmazás számára a CRUD műveletek végrehajtására az adatbázisban.

Az ORM-ek magas szintű API-ként működnek a CRUD végrehajtásához, és manapság a minőségi ORM-ek lehetővé teszik számunkra az adatok kódon keresztüli inicializálását is. A bonyolult adatkezelés, a tisztítás és így tovább, gyakran könnyebb a kódban. Míg léteznek dedikált Extract, Transform and Load (ETL) eszközök, ugyanazok az ETL feladatok könnyen megvalósíthatók az ORM-ben.

A kivonat, az átalakítás és a kóddal történő betöltés lehetővé teszi a rendszer számára, hogy könnyebben integrálja az adatokat nagyon különböző forrásokból. A többféle ízű SQL-adatbázisok, a NoSQL-adatok, a fájlrendszer-adatok és a harmadik felek adatai egyetlen nyelv alatt integrálhatók egy JavaScript ORM-mel.

Végül, a kódorientált adatkezelés lehetővé teszi a rendszer számára az adatfelhasználás végrehajtását futás közben vagy az összeállítási folyamat során, és szükség szerint rugalmasan adaptálja a felhasználást a fejlesztési folyamat során.

Megismételve, az ORM-ek javítják a fejlesztői termelékenységet azáltal, hogy magas szintű API-t nyújtanak egyetlen nyelven, olyan funkcionalitással, amely hagyományosan többféle eszközt és készségkészletet igényel. Kevesebb készségigény, eszközigény és óraszám megkönnyíti a projekt mozgásterét. Az előre nem látható követelményeket és a projekt ütemtervét jobban fel lehet készíteni rugalmas összeállítással és futásidejű adatkonfigurációval.

Előnyben részesített ORM képességek

Az ORM felülvizsgálatához vezető konkrét projektkörnyezet egy élvonalbeli, CMS-szerű, univerzális JavaScript alkalmazás bevezetését igényli.

Az élvonalbeli univerzális JavaScript keretrendszerek lényegében 3 ízben kaphatók: Angular, React és Vue. Vagyis az Angular Universal, a Next és a Nuxt.

A Node natív módon támogatja a fájlrendszer műveleteit, ezért a Tartalomkezelő Rendszer adatigénye előnyben részesíti a széles körű adatbázis-támogatást. Összességében a következő követelményeket vesszük figyelembe:

  1. A Mongo és a MySQL támogatása, előnyben részesítve a további opciók támogatását
  2. Integrálódjon a Webpack szolgáltatással
  3. Integrálódjon az Express-szel
  4. Minimális találat a futási időben
  5. Intuitív szintaxis
  6. Extra funkciók
  7. Magas Github csillag-kibocsátás arány
  8. Aktív karbantartás, összeépítési hibák vagy elavult függőségek nélkül

A jelöltek és az eredmények

Minden jelölt 0 és 10 közötti pontszámot kapott minden előnyös képességért. Az 5-ös pontszám azt jelenti, hogy elfogadható. Egy oszlop átlaga több vagy kevesebb lehet, mint 5. Például egy ORM, amely több NoSQL adatbázist támogat, és egyetlen SQL adatbázis sem támogat, 2 és 4 közötti pontszámot kap. 0 azt jelzi, hogy egy szolgáltatás teljesen hiányzik.

Különleges kiáltás a joi-ra, a pg-re és a knex-re. Ezek a könyvtárak nem teljes ORM-ek, de nagyszerűek abban, amit csinálnak. Ha nincs szüksége teljes körű ORM-re, akkor nézzen utána, és meg tudja-e oldani az igényét.

Következtetés

Az összesítés az egyes megoldások általános hasznosságát tükrözi. Az első 5 eredmény a következő volt:

  1. Hurok
  2. Víz vonal
  3. Indiai menyét
  4. TypeORM
  5. Folytatás

A projekt-specifikus igények, a kihagyott tényezők és a személyes preferenciák kombinációja vezet a legjobb 3 választáshoz.

A vízvonal erősen integrálva van a Sails keretbe, és a Mongoose csak a MongoDB-t támogatja.

A Sequelize és a NodeORM2 az SQL-re korlátozódik, és hiányzik belőlük az API-generálás.

A TypeScript szintaxisa miatt a TypeORM szépen integrálódik egy Angular projekttel.

Fejlesztőként egynél több csúcsmegoldás prototípusának elkészítését ajánlom a valódi nyertes azonosításához. A három legfontosabb megoldás, amelyek mind prototípus-jelöltek, a következőket tartalmazzák:

  1. Hurok
  2. TypeORM
  3. Caminte

Ezt az információt elküldtem a projekt többi fejlesztőjének, és csapatként úgy döntöttünk, hogy először kipróbáljuk a TypeORM-ot. Térjen vissza később a visszatekintéshez!

Mit gondol erről az eredményről? Hagyjon megjegyzést, vagy járuljon hozzá ehhez a ferde összehasonlításhoz.