Hvilken JavaScript ORM skal du bruge i 2018?

af John Vandivier

Bemærk: Maj 2018: Læs fra TypeORM til LoopBack: en retrospektiv for et opdateret perspektiv!

— — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —Denne artikel gennemgår object Relational Mapping (ORM) – løsninger i JavaScript-økosystemet og identificerer en ideel løsning baseret på specifikke krav.

Hvad er en ORM, og hvorfor er det så vigtigt?

ORM-løsninger er nyttige til at lette datadrevet API-udvikling. Brugere har konkrete behov, der driver datamodellen for en applikation. I ældre udvikling implementeres denne dataarkitektur typisk og versionsstyres ved hjælp af databasescripts som f.eks. Et separat bibliotek bruges derefter til serverapplikationen til at udføre grove handlinger i databasen.

ORMs fungerer som et API på højt niveau til at udføre CRUD, og i disse dage tillader Kvalitet ORMs os også at initialisere dataene gennem kode. Kompleks datamanipulation, rengøring og så videre er ofte lettere i kode. Mens der findes dedikerede værktøjer til udpakning, transformation og indlæsning (ETL), kan de samme ETL-opgaver let implementeres i ORM.

implementering af ekstrakt, transformation og indlæsning med kode gør det muligt for et system lettere at integrere data fra meget forskellige kilder. Data fra filsystemet og tredjepartsdata kan alle integreres under et enkelt sprog med en JavaScript ORM.endelig giver kodeorienteret datakontrol også et system mulighed for at implementere dataforbrug på kørselstid eller i byggeprocessen og fleksibelt tilpasse brugen under udviklingsprocessen efter behov.

for at gentage forbedrer ORMs udviklerens produktivitet ved at levere et API på højt niveau på et enkelt sprog med funktionalitet, der traditionelt kræver flere forskellige værktøjer og færdigheder. Færre færdighedsbehov, værktøjsbehov og krævede timer Letter projektmargenen. Uforudsete krav og projektets tidslinje er bedre forberedt med fleksibel build og run-time datakonfiguration.

foretrukne ORM-funktioner

den særlige projektkontekst, der fører til denne ORM-gennemgang, kræver implementering af en banebrydende, CMS-lignende, universel JavaScript-applikation.

banebrydende universelle JavaScript rammer kommer i det væsentlige 3 varianter: Angular, React og vue. Det vil sige vinkel universel, Næste og nust.

Node understøtter oprindeligt filsystemoperationer, så datakrav til indholdsstyringssystem udgør en præference for bred databasestøtte. I alt overvejes følgende krav:

  1. Støtte til Mongo og MySQL, med fortrinsret til støtte for yderligere indstillinger
  2. Integrere med Webpack
  3. Integrere med Hurtig
  4. Minimal hit til performance run-time
  5. særlig Intuitiv, syntaks
  6. Ekstra funktioner
  7. Høj Github stjerne til at udstede forhold
  8. Aktivt vedligeholdt med ingen bygge fejl eller deprecated afhængigheder

Kandidater og Resultater

Hver kandidat fik en score mellem 0 og 10 for hver foretrukne kapacitet. En score på 5 betyder acceptabel. Gennemsnittet for en kolonne kan være mere eller mindre end 5. For eksempel vil en ORM med understøttelse af flere databaser og ingen understøttelse af nogen database modtage en score mellem 2 og 4. 0 angiver den fuldstændige mangel på en funktion.

se dette indlæg eller Dette Google-ark for at klikke på hyperlinks eller kopiere data som en tabel.

et særligt råb til joi, pg og kneks. Disse biblioteker er ikke fulde ORMs, men de er gode til, hvad de gør. Hvis du ikke har brug for en fuld blæst ORM, tage et kig og se, om de kan løse dit behov.

konklusion

totalerne afspejler den samlede anvendelighed af hver løsning. De 5 bedste resultater var:

  1. Loopback
  2. vandlinje
  3. Mongoose
  4. TypeORM
  5. Følg

en kombination af projektspecifikke behov, udeladte faktorer og personlig præference fører til de 3 bedste valg.

vandlinjen er stærkt integreret i Sejlrammen, og Mongoose understøtter kun MongoDB.

Følg og NodeORM2 er begrænset til API-generering.

på grund af TypeScript-syntaksen integreres TypeORM pænt med et Vinkelprojekt.

som udvikler anbefaler jeg prototyper mere end en topløsning for at identificere den rigtige vinder. De 3 bedste løsninger, som alle er prototypekandidater, inkluderer:

  1. Loopback
  2. TypeORM
  3. Caminte

Jeg sendte disse oplysninger til andre udviklere på projektet, og som et team besluttede vi at prøve TypeORM først. Kom tilbage senere for retrospektivet!

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.