Ce JavaScript ORM ar trebui să utilizați în 2018?

de John Vandivier

notă: mai 2018: citiți de la TypeORM la LoopBack: o retrospectivă pentru o perspectivă actualizată!

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —

Acest articol analizează soluțiile de mapare relațională a obiectelor (ORM) din ecosistemul JavaScript și identifică o soluție ideală bazată pe cerințe specifice.

ce este un ORM și de ce este atât de Important?

soluțiile ORM sunt utile pentru a facilita dezvoltarea API bazată pe date. Utilizatorii au nevoi concrete care conduc modelul de date al unei aplicații. În dezvoltarea moștenită, această arhitectură de date este de obicei implementată și controlată de versiune folosind scripturi de baze de date, cum ar fi scripturile SQL. O bibliotecă separată este apoi utilizată pentru aplicația server pentru a executa acțiuni brute în baza de date.

Orm-urile funcționează ca un API de nivel înalt pentru a executa CRUD, iar în aceste zile Orm-urile de calitate ne permit, de asemenea, să inițializăm datele prin cod. Manipularea complexă a datelor, curățarea și așa mai departe, este adesea mai ușoară în cod. În timp ce există instrumente dedicate de extragere, transformare și încărcare (ETL), aceleași sarcini ETL pot fi implementate cu ușurință în ORM.

implementarea extragerii, transformării și încărcării cu cod permite unui sistem să integreze mai ușor date din surse foarte diferite. Bazele de date SQL cu mai multe arome, date NoSQL, date de sistem de fișiere și date terțe pot fi integrate într-o singură limbă cu un Orm JavaScript.

în cele din urmă, controlul datelor orientat pe cod permite, de asemenea, unui sistem să implementeze utilizarea datelor în timpul rulării sau în procesul de construire și să adapteze flexibil utilizarea în timpul procesului de dezvoltare, după cum este necesar.

pentru a reafirma, Orm-urile îmbunătățesc productivitatea dezvoltatorilor oferind un API de nivel înalt, într-o singură limbă, cu funcționalități care ar necesita în mod tradițional mai multe instrumente și seturi de abilități diferite. Mai puține nevoi de abilități, nevoi de instrumente și ore necesare facilitează marja proiectului. Cerințele neprevăzute și cronologia proiectului sunt mai bine pregătite cu configurarea flexibilă a datelor și a timpului de rulare.

capabilități ORM preferate

contextul special al proiectului care duce la această revizuire ORM necesită implementarea unei aplicații JavaScript universale de ultimă generație, asemănătoare CMS.

cadrele JavaScript universale de ultimă generație vin în esență 3 arome: Angular, React și Vue. Adică Angular Universal, Next și nuxt.

nod suportă nativ operațiunile de sistem de fișiere, astfel încât cerințele de date ale sistemului de gestionare a conținutului se ridică la o preferință pentru suportul bazei de date pe scară largă. În total, sunt luate în considerare următoarele cerințe:

  1. suport pentru Mongo și MySQL, cu preferință pentru a sprijini de opțiuni suplimentare
  2. integra cu Webpack
  3. integra cu Express
  4. hit minim la performanță în timpul rulării
  5. sintaxă intuitivă
  6. caracteristici suplimentare
  7. stea Github mare pentru a emite raport
  8. menținut în mod activ, fără eșecuri construi sau dependențe depreciate

candidații rezultate

fiecare candidat a primit un scor între 0 și 10 pentru fiecare capacitate preferată. Un scor de 5 înseamnă acceptabil. Media pentru o coloană poate fi mai mare sau mai mică de 5. De exemplu, un ORM cu suport pentru mai multe baze de date NoSQL și niciun suport pentru nicio bază de date SQL va primi un scor între 2 și 4. 0 indică lipsa completă a unei caracteristici.

vizualizați această postare sau această foaie Google pentru a face clic pe hyperlink-uri sau pentru a copia datele ca tabel.

un strigăt special pentru joi, pg și knex. Aceste biblioteci nu sunt Orm-uri pline, dar sunt grozave în ceea ce fac. Dacă nu aveți nevoie de un ORM complet suflat, aruncați o privire și vedeți dacă vă pot satisface nevoia.

concluzie

totalurile reflectă utilitatea generală a fiecărei soluții. Primele 5 rezultate au fost:

  1. Loopback
  2. linia de plutire
  3. Mongoose
  4. Typeorm
  5. Sequelize

o combinație de nevoi specifice proiectului, factori omise, și preferințele personale duce la primele 3 ponturi.linia de plutire este puternic integrată în cadrul Sails, iar Mongoose acceptă doar MongoDB.

Sequelize și NodeORM2 sunt limitate la SQL și le lipsește generarea API.

datorită sintaxei TypeScript, TypeORM se integrează frumos cu un proiect unghiular.

ca dezvoltator, recomand prototiparea mai multor soluții de top pentru a identifica adevăratul câștigător. Primele 3 soluții, care sunt toți candidați la prototipuri, includ:

  1. Loopback
  2. TypeORM
  3. Caminte

am trimis aceste informații altor dezvoltatori din proiect și, ca echipă, am decis să încercăm mai întâi TypeORM. Reveniți mai târziu pentru retrospectivă!

Lasă un răspuns

Adresa ta de email nu va fi publicată.