Προγραμματισμός

Τι είναι η στοίβα MEAN; Εφαρμογές ιστού JavaScript

Η στοίβα MEAN, ορίζεται

Η στοίβα MEAN είναι μια στοίβα λογισμικού - δηλαδή, ένα σύνολο επιπέδων τεχνολογίας που αποτελούν μια σύγχρονη εφαρμογή - που είναι ενσωματωμένη εξ ολοκλήρου σε JavaScript. Το MEAN αντιπροσωπεύει την άφιξη του JavaScript ως γλώσσα "ανάπτυξης πλήρους στοίβας", εκτελώντας τα πάντα σε μια εφαρμογή από το μπροστινό μέρος στο πίσω μέρος. Κάθε ένα από τα αρχικά στο MEAN σημαίνει ένα στοιχείο στη στοίβα:

  • MongoDB: Ένας διακομιστής βάσης δεδομένων που υποβάλλεται σε ερώτηση χρησιμοποιώντας JSON (Σημείωση αντικειμένου JavaScript) και που αποθηκεύει δομές δεδομένων σε δυαδική μορφή JSON
  • Εξπρές: Ένα πλαίσιο JavaScript από διακομιστή
  • Γωνιώδης: Ένα πλαίσιο JavaScript από πελάτη
  • Node.js: Χρόνος εκτέλεσης JavaScript

Ένα μεγάλο μέρος της έκκλησης του MEAN είναι η συνέπεια που προκύπτει από το γεγονός ότι είναι JavaScript μέσω και μέσω. Η ζωή είναι απλούστερη για προγραμματιστές, επειδή κάθε στοιχείο της εφαρμογής - από τα αντικείμενα της βάσης δεδομένων έως τον κωδικό πελάτη - είναι γραμμένο στην ίδια γλώσσα.

Αυτή η συνέπεια έρχεται σε αντίθεση με το hodgepodge του LAMP, το μακροχρόνιο βασικό στοιχείο των προγραμματιστών εφαρμογών ιστού. Όπως το MEAN, το LAMP είναι ένα αρκτικόλεξο για τα στοιχεία που χρησιμοποιούνται στη στοίβα - Linux, ο Apache HTTP Server, MySQL και είτε PHP, Perl ή Python. Κάθε κομμάτι της στοίβας έχει λίγο κοινό με οποιοδήποτε άλλο κομμάτι.

Αυτό δεν σημαίνει ότι η στοίβα LAMP είναι κατώτερη. Χρησιμοποιείται ακόμη ευρέως και κάθε στοιχείο στη στοίβα εξακολουθεί να ωφελείται από μια ενεργή κοινότητα ανάπτυξης. Όμως η εννοιολογική συνέπεια που παρέχει το MEAN είναι ένα όφελος. Εάν χρησιμοποιείτε την ίδια γλώσσα και πολλές από τις ίδιες έννοιες γλώσσας, σε όλα τα επίπεδα της στοίβας, γίνεται πιο εύκολο για έναν προγραμματιστή να κυριαρχήσει ολόκληρη τη στοίβα ταυτόχρονα.

Οι περισσότερες στοίβες MEAN διαθέτουν και τα τέσσερα στοιχεία - τη βάση δεδομένων, το μπροστινό μέρος, το πίσω μέρος και τη μηχανή εκτέλεσης. Αυτό δεν σημαίνει ότι αποτελείται η στοίβα μόνο αυτά τα στοιχεία, αλλά αποτελούν τον πυρήνα.

MongoDB

Όπως και άλλα συστήματα βάσεων δεδομένων NoSQL, το MongoDB χρησιμοποιεί σχεδιασμό χωρίς σχήμα. Τα δεδομένα αποθηκεύονται και ανακτώνται ως έγγραφα με μορφοποίηση JSON, τα οποία μπορούν να έχουν οποιοδήποτε ένθετο πεδίο. Αυτή η ευελιξία καθιστά το MongoDB κατάλληλο για ταχεία ανάπτυξη εφαρμογών όταν ασχολείται με ταχέως μεταβαλλόμενες απαιτήσεις.

Η χρήση του MongoDB συνοδεύεται από αρκετές προειδοποιήσεις. Πρώτον, η MongoDB έχει τη φήμη ότι είναι ανασφαλής από προεπιλογή. Εάν το αναπτύξετε σε περιβάλλον παραγωγής, πρέπει να λάβετε μέτρα για να το ασφαλίσετε. Και για προγραμματιστές που προέρχονται από σχεσιακές βάσεις δεδομένων ή ακόμα και από άλλα συστήματα NoSQL, θα πρέπει να αφιερώσετε λίγο χρόνο για να γνωρίσετε το MongoDB και πώς λειτουργεί. Ο Martin Heller καταδύεται βαθιά στο MongoDB 4 στην κριτική, όπου μιλά για εσωτερικά, ερωτήματα και μειονεκτήματα του MongoDB.

Όπως και με οποιαδήποτε άλλη λύση βάσης δεδομένων, θα χρειαστείτε κάποιο είδος ενδιάμεσου λογισμικού για να επικοινωνήσετε μεταξύ του MongoDB και των στοιχείων JavaScript. Μία κοινή επιλογή για τη στοίβα MEAN είναι το Mongoose. Το Mongoose δεν παρέχει μόνο συνδεσιμότητα, αλλά μοντελοποίηση αντικειμένων, επικύρωση από την εφαρμογή και μια σειρά από άλλες λειτουργίες που δεν θέλετε να ενοχλείτε με την επανεφεύρεση για κάθε νέο έργο.

Express.js

Το Express είναι αναμφισβήτητα το πιο διαδεδομένο πλαίσιο εφαρμογής ιστού για το Node.js. Το Express παρέχει μόνο ένα μικρό σύνολο βασικών δυνατοτήτων - είναι ουσιαστικά ένας ελάχιστος, προγραμματιζόμενος διακομιστής ιστού - αλλά μπορεί να επεκταθεί μέσω προσθηκών. Αυτή η απλή σχεδίαση βοηθά στη διατήρηση του Express ελαφρύ και με απόδοση.

Τίποτα δεν λέει ότι μια εφαρμογή MEAN πρέπει να σερβίρεται απευθείας στους χρήστες μέσω Express, αν και αυτό είναι σίγουρα ένα κοινό σενάριο. Μια εναλλακτική αρχιτεκτονική είναι να αναπτύξετε έναν άλλο διακομιστή ιστού, όπως το Nginx ή το Apache, μπροστά από το Express ως αντίστροφο διακομιστή μεσολάβησης. Αυτό επιτρέπει την εκφόρτωση λειτουργιών όπως η εξισορρόπηση φορτίου σε ξεχωριστό πόρο.

Επειδή το Express είναι σκόπιμα ελάχιστο, δεν έχει πολύ εννοιολογικό γενικό κόστος. Τα σεμινάρια στο Expressjs.com μπορούν να σας μεταφέρουν από μια γρήγορη επισκόπηση των βασικών στοιχείων έως τη σύνδεση βάσεων δεδομένων και όχι μόνο.

Γωνιώδης

Το Angular (πρώην AngularJS) χρησιμοποιείται για την κατασκευή της διεπαφής για μια εφαρμογή MEAN. Η Angular χρησιμοποιεί τη JavaScript του προγράμματος περιήγησης για τη μορφοποίηση δεδομένων που παρέχονται από διακομιστή σε πρότυπα HTML, έτσι ώστε μεγάλο μέρος της εργασίας απόδοσης μιας ιστοσελίδας να μπορεί να εκφορτωθεί στον πελάτη. Πολλές εφαρμογές ιστού μίας σελίδας έχουν δημιουργηθεί χρησιμοποιώντας το Angular στο μπροστινό μέρος.

Μια σημαντική προειδοποίηση: Οι προγραμματιστές συνεργάζονται με το Angular γράφοντας στο TypeScript, μια πληκτρολογημένη γλώσσα τύπου JavaScript που μεταγλωττίζεται στο JavaScript. Για μερικούς ανθρώπους αυτό αποτελεί παραβίαση μιας από τις βασικές έννοιες της στοίβας MEAN - ότι η JavaScript χρησιμοποιείται παντού και αποκλειστικά. Ωστόσο, το TypeScript είναι στενός ξάδελφος του JavaScript, οπότε η μετάβαση μεταξύ των δύο δεν είναι τόσο ενοχλητική όσο θα μπορούσε να γίνει με άλλες γλώσσες.

Για μια βαθιά βουτιά στο Angular, ο Martin Heller σας έχει καλύψει. Στο φροντιστήριο του Angular θα σας καθοδηγήσει στη δημιουργία μιας σύγχρονης, γωνιακής εφαρμογής ιστού.

Node.js

Τελευταίο, αλλά σχεδόν το λιγότερο, υπάρχει το Node.js — ο χρόνος εκτέλεσης JavaScript που τροφοδοτεί την πλευρά του διακομιστή της εφαρμογής web MEAN. Ο κόμβος βασίζεται στη μηχανή JavaScript V8 της Google, την ίδια μηχανή JavaScript που εκτελείται στο πρόγραμμα περιήγησης ιστού Chrome. Ο κόμβος είναι πολλαπλής πλατφόρμας, εκτελείται τόσο σε διακομιστές όσο και σε πελάτες και έχει ορισμένα πλεονεκτήματα απόδοσης σε σχέση με τους παραδοσιακούς διακομιστές ιστού όπως το Apache.

Το Node.js ακολουθεί διαφορετική προσέγγιση για την εξυπηρέτηση αιτημάτων ιστού από τους παραδοσιακούς διακομιστές ιστού. Στην παραδοσιακή προσέγγιση, ο διακομιστής δημιουργεί ένα νέο νήμα εκτέλεσης ή ακόμη και διακινεί μια νέα διαδικασία για τον χειρισμό του αιτήματος. Τα νήματα ωοτοκίας είναι πιο αποτελεσματικά από ό, τι οι διεργασίες διακλάδωσης, αλλά και τα δύο περιλαμβάνουν πολλά γενικά έξοδα. Ένας μεγάλος αριθμός νημάτων μπορεί να προκαλέσει ένα πολύ φορτωμένο σύστημα να ξοδέψει πολύτιμους κύκλους για τον προγραμματισμό νημάτων και την αλλαγή περιβάλλοντος, προσθέτοντας καθυστέρηση και επιβάλλοντας όρια στην επεκτασιμότητα και την απόδοση.

Το Node.js είναι πολύ πιο αποτελεσματικό. Ο κόμβος εκτελεί έναν βρόχο συμβάντος με ένα νήμα που είναι εγγεγραμμένος στο σύστημα για τον χειρισμό συνδέσεων και κάθε νέα σύνδεση προκαλεί ενεργοποίηση μιας λειτουργίας επιστροφής JavaScript. Η συνάρτηση επανάκλησης μπορεί να χειριστεί αιτήματα με κλήσεις εισόδου / εξόδου χωρίς αποκλεισμό και, εάν είναι απαραίτητο, να δημιουργήσει νήματα από μια ομάδα για να εκτελέσει λειτουργίες αποκλεισμού ή εντάσεως CPU και να ισορροπήσει φορτίο μεταξύ πυρήνων CPU.

Το Node.js απαιτεί λιγότερη μνήμη για το χειρισμό περισσότερων συνδέσεων από τις περισσότερες ανταγωνιστικές αρχιτεκτονικές που κλιμακώνονται με νήματα - συμπεριλαμβανομένων των Apache HTTP Server, ASP.NET, Ruby on Rails και διακομιστών εφαρμογών Java. Έτσι, το Node έχει γίνει μια εξαιρετικά δημοφιλής επιλογή για τη δημιουργία διακομιστών ιστού, REST API και εφαρμογών σε πραγματικό χρόνο, όπως εφαρμογές συνομιλίας και παιχνίδια. Εάν υπάρχει ένα στοιχείο που ορίζει τη στοίβα MEAN, είναι το Node.js.

Για μια εισαγωγή στο Node.js, δείτε τον εξηγητή του Martin Heller. Για να ξεκινήσετε την ανάπτυξη με το Node, ανατρέξτε στο σεμινάριο του Node.js.

Πλεονεκτήματα και οφέλη της στοίβας MEAN 

Αυτά τα τέσσερα συστατικά που λειτουργούν παράλληλα δεν είναι η λύση σε κάθε πρόβλημα, αλλά σίγουρα έχουν βρει μια θέση στη σύγχρονη ανάπτυξη. Η IBM αναλύει τις περιοχές όπου η στοίβα MEAN ταιριάζει στο λογαριασμό. Επειδή είναι επεκτάσιμο και μπορεί να χειριστεί ταυτόχρονα μεγάλο αριθμό χρηστών, η στοίβα MEAN είναι μια ιδιαίτερα καλή επιλογή για εφαρμογές εγγενών cloud. Το γωνιακό μπροστινό άκρο είναι επίσης μια εξαιρετική επιλογή για εφαρμογές μιας σελίδας. Τα παραδείγματα περιλαμβάνουν:

  • Εφαρμογές παρακολούθησης δαπανών
  • Ιστότοποι συγκέντρωσης ειδήσεων
  • Εφαρμογές χαρτογράφησης και τοποθεσίας

MEAN εναντίον MERN

Το ακρωνύμιο «MERN» χρησιμοποιείται μερικές φορές για να περιγράψει MEAN στοίβες που χρησιμοποιούν το React.js στη θέση του Angular. Το React είναι ένα πλαίσιο, όχι μια πλήρης βιβλιοθήκη όπως το Angular και υπάρχουν πλεονεκτήματα και μειονεκτήματα για την εναλλαγή του React σε μια στοίβα που βασίζεται σε JavaScript. Εν συντομία, το React είναι πιο εύκολο να μάθει, και οι περισσότεροι προγραμματιστές μπορούν να γράψουν και να δοκιμάσουν τον κώδικα React γρηγορότερα από ό, τι μπορούν να γράψουν και να δοκιμάσουν μια πλήρη γωνιακή εφαρμογή. Το React παράγει επίσης καλύτερες φορητές άκρες. Από την άλλη πλευρά, ο γωνιακός κώδικας είναι πιο σταθερός, καθαρότερος και αποδοτικός. Σε γενικές γραμμές, το Angular είναι η επιλογή για ανάπτυξη επιχειρηματικής κλάσης.

Όμως, το γεγονός ότι αυτή η επιλογή είναι διαθέσιμη σε εσάς δείχνει ότι το MEAN δεν είναι περιορισμένος περιορισμός για προγραμματιστές. Όχι μόνο μπορείτε να ανταλλάξετε διαφορετικά στοιχεία για ένα από τα τέσσερα κανονικά επίπεδα. Μπορείτε επίσης να προσθέσετε συμπληρωματικά στοιχεία. Για παράδειγμα, συστήματα προσωρινής αποθήκευσης όπως το Redis ή το Memcached θα μπορούσαν να χρησιμοποιηθούν στο Express για να επιταχύνουν τις απαντήσεις στα αιτήματα.

Σημαίνει προγραμματιστές στοίβας

Έχοντας τις δεξιότητες για να γίνετε προγραμματιστής στοίβας MEAN ουσιαστικά σημαίνει να γίνετε προγραμματιστής πλήρους στοίβας, με έμφαση στο συγκεκριμένο σύνολο εργαλείων JavaScript που έχουμε συζητήσει εδώ. Ωστόσο, η δημοτικότητα της στοίβας MEAN σημαίνει ότι πολλές διαφημίσεις εργασίας θα στοχεύουν σε προγραμματιστές πλήρους στοίβας με δεξιότητες ειδικά για το MEAN. Το Guru99 καταρρίπτει τις προϋποθέσεις για μια από αυτές τις θέσεις εργασίας. Πέρα από την εξοικείωση με τα βασικά στοιχεία στοίβας MEAN, ένας προγραμματιστής στοίβας MEAN πρέπει να έχει καλή κατανόηση:

  • Διαδικασίες front-end και back-end
  • HTML και CSS
  • Πρότυπα προγραμματισμού και οδηγίες σχεδιασμού αρχιτεκτονικής
  • Ανάπτυξη Ιστού, συνεχής ενοποίηση και τεχνολογίες cloud
  • Αρχιτεκτονική βάσης δεδομένων
  • Ο κύκλος ζωής ανάπτυξης λογισμικού (SDLC) και πώς είναι η ανάπτυξη σε ένα ευέλικτο περιβάλλον

Ποιος είναι ο μισθός του προγραμματιστή MEAN stack; Παρόλο που υπάρχει πάντα μια σειρά βασισμένη στην εμπειρία και τον εργοδότη, είναι σίγουρα ένα προσοδοφόρο πεδίο. Από τον Δεκέμβριο του 2019, το Neuvoo.com αναφέρει ότι ο μέσος μισθός που μπορεί να αναμένει ένας προγραμματιστής MEAN stack είναι περίπου 125.000 $ ετησίως. Το Indeed.com μειώνει γενικά τους προγραμματιστές στοίβας MEAN με devs πλήρους στοίβας γενικότερα και συνδέει τον τυπικό ετήσιο μισθό με περίπου 112.000 $.

MEAN στοίβα σεμινάρια

Είστε άνετα με τα τεχνικά βασικά και είστε έτοιμοι να βουτήξετε και να μάθετε το MEAN stack; Υπάρχουν πολλά δωρεάν μαθήματα εκεί έξω που μπορούν να σας ξεκινήσουν. Ο ιστότοπος Angular Templates διαθέτει ένα ιδιαίτερα λεπτομερές σεμινάριο που σας καθοδηγεί στη διαδικασία δημιουργίας ενός απλού ιστότοπου χρησιμοποιώντας τη στοίβα MEAN. Το TutorialsPoint έχει έναν καλό οδηγό για τη δημιουργία μίας σελίδας διαδικτυακής εφαρμογής με τη στοίβα MEAN. Απολαύστε τα χέρια σας βρώμικα και καλή τύχη!