AdonisJS - το καλύτερο πλαίσιο NodeJS του 2017

Περίπου έξι μήνες πριν έψαχνα για μια εναλλακτική λύση για το SailsJS - ένα πλαίσιο MVC για κόμβο. Δυστυχώς, ο Sails ανέστειλε αρκετά σε μερικά πράγματα - ήταν αργή στα αιτήματα POST, δεν υποστήριζε πολλές λειτουργίες Postgres, όπως οι συναλλαγές και δεν είχαν λίγα άλλα χαρακτηριστικά (για παράδειγμα, περιγράφονται εδώ). Αλλά το χειρότερο από αυτό είναι ότι δεν έλαβε μια μεγάλη ενημέρωση τα τελευταία τρία χρόνια.

Έτσι ξεκινήσαμε να ψάχνουμε κάτι για να μετακινήσουμε τα projects nodeJS μας. Έχουμε δοκιμάσει το Koa.js (αλλά λείπει πάρα πολλά πράγματα), Meteor.js (δεν χρειαζόμαστε πραγματικά λύση all-in-one, μόνο API), Loopback (πάρα πολύ μαγεία) και μερικά άλλα.

Μέχρι να σκοντάψω στο AdonisJS. Για να είμαι ειλικρινής, παρόλο που το πλαίσιο έχει 2.5k ξεκινάει με github, δεν ήταν εύκολο να βρεθεί. Αλλά αμέσως ένιωσα την αγάπη μου. Θα προσπαθήσω να εξηγήσω γιατί.

Πλεονεκτήματα

1. Κοιτάζοντας τη δομή του φακέλου και τη λογική πίσω, είναι σχεδόν ίδια με ένα πολύ δημοφιλές PHP πλαίσιο - Laravel. Και ο Laravel έχει μια καλή δομή σκέψης, η οποία σας επιτρέπει να κρατάτε τα πράγματα καθαρά. Έτσι, αν έχετε εργαστεί ποτέ με αυτό, θα μάθετε τον Adonis πραγματικά γρήγορα.

2. Το ORM του γίνεται με βάση τις βάσεις δεδομένων SQL - όπως Postgres ή MySQL. Δημιουργεί αποτελεσματικά ερωτήματα SQL και βασίζεται στην ενεργή ιδέα εγγραφής. Το εργαλείο δημιουργίας ερωτημάτων είναι εύκολο να το μάθει και μας επιτρέπει να κατασκευάζουμε απλά ερωτήματα γρήγορα. Για παράδειγμα:

()) () () () () () () () () ()

Αλλά ακόμα και όταν χρειαζόμαστε πιο περίπλοκα πράγματα όπως μεταναστεύσεις, συναλλαγές, συνδέσεις, τσοκ ή ερωτήματα εντελώς "εγγενούς γλώσσας SQL" - είναι όλα εκεί και είναι εύκολο στη χρήση. Όσο για τους λάτρεις της MongoDB - το υποστηρίζει και το adonis.

3. Έχει μια εύχρηστη επέκταση επικύρωσης. Κάνει εύκολο να γράψετε κανόνες, για παράδειγμα:

const κανόνες = {
  όνομα χρήστη: 'απαιτείται μοναδική: χρήστες',
  email: 'απαιτείται | email | μοναδική: χρήστες',
  κωδικός πρόσβασης: "απαιτείται επιβεβαίωση",
  ομάδα: 'existsIn: Group'
}}
const επικύρωση = απόδοση Validator.validate (userData, User.rules)
αν (validation.fails ()) ρίξει νέα Errors.Validation (επικύρωση)

Αυτοί οι έλεγχοι μπορούν να είναι συγχρονισμένοι ή ασύγχρονοι, να έχουν πρόσβαση στη βάση δεδομένων ή οτιδήποτε άλλο χρειάζεται. Και μπορεί να επεκταθεί πολύ εύκολα, για παράδειγμα, γράψαμε έναν έλεγχο για να αποδείξουμε αν υπάρχει αρχείο στη βάση δεδομένων μας.

4. Απλά ένα μπόνους! Προσωπικά, μου αρέσει ο τρόπος που χρησιμοποιεί ο Adonis και χρησιμοποιεί τις λειτουργίες γεννήτριας. Για παράδειγμα:

// Κλασσική γνωστή ως σπαγγέτι
Users.all ((err, χρήστες) => {
  users.bicycles () fetch ((err, ποδήλατα) => {
    res.send ({χρήστες, ποδήλατα})
  })
})
// Υποσχίστε τον τρόπο
αφήστε τους χρήστες = null
Users.all ()
.then (fetchedUsers => {
  users = fetchedUsers
  επιστροφή χρηστών.bicycles () fetch ()
})
.then (ποδήλατα => {
  res.send ({χρήστες, ποδήλατα})
})
// τρόπος γεννήτριας (γνωστός και ως τρόπος AdonisJS)
// Απόδοση παύει την εκτέλεση κώδικα μέχρι να ολοκληρωθεί η λειτουργία async
const χρήστες = απόδοση Users.all ()
const ποδήλατα = αποδίδουν χρήστες.bicycles () fetch ()
res.send ({χρήστες, ποδήλατα})

Κάνει τον κώδικα σαφέστερο! Δεν υπάρχουν πλέον κλειστές λειτουργίες ή υποσχέσεις, μόνο απλός κώδικας χωρίς χαρτογράφηση.

Μειονεκτήματα

  1. Δεν υπάρχει προεπιλεγμένη ρύθμιση δοκιμής. Γράφοντας κώδικα χωρίς δοκιμές - είναι ένας πολύ αφελής τρόπος ανάπτυξης :-) Έτσι, έπρεπε να επενδύσουμε χρόνο στην εφαρμογή της δικής μας δοκιμαστικής εγκατάστασης γύρω από τον Adonis. Upd: Η επίσημη δοκιμή εγκατάστασης και το σεμινάριο θα παρουσιαστούν στο ακόλουθο Adonis 4.0
  2. Επειδή δεν υπάρχουν πολλοί συνεισφέροντες και χρήστες, μερικές φορές μπορείτε ακόμα να πιάσετε ένα σφάλμα σε βασικές βιβλιοθήκες. Μερικοί από αυτούς είναι προφανείς :-)
  3. Παρόλο που τα έγγραφα είναι καλά, η κοινότητα είναι ακόμα μικρή. Δεν υπάρχουν πολλές απαντήσεις στο StackOverflow και δεν υπάρχουν πολλά μαθήματα (εκτός από το επίσημο)

Αντί του συμπεράσματος

Χρησιμοποιούμε την AdonisJS στην παραγωγή για τους τελευταίους έξι μήνες. Είναι σταθερό και γρήγορο. Το αγαπάμε!

Αν ψάχνετε για ένα σύγχρονο πλαίσιο Node.js με ES6, υποστήριξη Postgres και μια καλή δομή - ελέγξτε το Adonis.js

P. S. Το τελευταίο μου έργο - https://pingdisco.com είναι 100% adonisjs, είναι ένα δωρεάν εργαλείο παρακολούθησης uptime. Δοκιμάστε να δημιουργήσετε έναν λογαριασμό εκεί (χρειάζεται μόνο ένα πεδίο για να γεμίσετε) και δείτε τον εαυτό σας πόσο γρήγορα και ομαλά είναι.

P. P. S. Και αν χρειάζεστε βοήθεια ή έχετε προβλήματα με το πλαίσιο, μην διστάσετε να μου δώσετε ένα μήνυμα στον κωτηριαστή. Κάνω επίσης εκπαιδευτικές συναντήσεις όπου μπορώ να σας δείξω τα βασικά και μερικές δροσερές χάρες του Adonis.