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

7 κλειδιά για τη δομή της εφαρμογής Node.js

Ο Rahul Mhatre είναι τεχνικός αρχιτέκτονας στο Built.io.

Το Node.js πλησιάζει γρήγορα τις Java, Ruby, Python και .Net ως προτιμώμενη γλώσσα για την ανάπτυξη νέων εφαρμογών ιστού. Η ομάδα του Node.js βελτιώνει τον χρόνο εκτέλεσης του JavaScript, γρηγορότερα και πιο σταθερά κάθε μέρα. Και η κοινότητα των χρηστών αυξάνεται με ένα γρήγορο κλιπ.

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

Τα πλαίσια γενικά εφαρμόζουν μοτίβα MV όπως MVC (μοντέλο-view-controller), MVVM (model-view-viewmodel), MVP (μοντέλο-προβολή-παρουσιαστής) ή απλά MV. Σας λένε επίσης πού πρέπει να είναι ο κώδικας για μοντέλα, προβολές και ελεγκτές, πού πρέπει να είναι οι διαδρομές σας και πού πρέπει να προσθέσετε τις διαμορφώσεις σας. Πολλοί νέοι προγραμματιστές και λάτρεις του Node.js δεν καταλαβαίνουν πραγματικά πώς τα σχέδια σχεδιασμού ή τα διαγράμματα OOP (Object Oriented Programming) αντιστοιχούν στις γραμμές ή τη δομή του κώδικα στην εφαρμογή τους.

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

Εδώ είναι τα επτά βασικά σημεία που σκέφτομαι πριν χαρτογραφήσω μια εφαρμογή Node.js.

1. Η σωστή δομή καταλόγου για την εφαρμογή

Ενώ αποφασίζετε τη δομή καταλόγου για την εφαρμογή σας, θα πρέπει να λάβετε υπόψη το σχέδιο σχεδίασης που επιλέξατε. Αυτό θα βοηθήσει με την ενσωμάτωση, την εύρεση κώδικα και την ταχύτερη απομόνωση ζητημάτων. Προσωπικά προτιμώ να χρησιμοποιώ ένα μοτίβο MVC κατά τη δημιουργία μιας εφαρμογής Node.js. Με βοηθά να αναπτύξω γρηγορότερα, παρέχει ευελιξία για τη δημιουργία πολλαπλών προβολών για τα ίδια δεδομένα και επιτρέπει την ασύγχρονη επικοινωνία και απομόνωση μεταξύ των στοιχείων MVC, για να αναφέρουμε μερικές.

Μου αρέσει να ακολουθώ τη δομή καταλόγου που φαίνεται παραπάνω, η οποία βασίζεται σε έναν συνδυασμό Ruby on Rails και Express.js.

Σχετικό βίντεο: Συμβουλές και κόλπα Node.js

Σε αυτό το εξηγητικό βίντεο, μάθετε διάφορες τεχνικές που μπορούν να βελτιώσουν την εμπειρία ανάπτυξης του κόμβου σας.

2. Χαρτογράφηση διαγραμμάτων ER σε μοντέλα

Όπως ορίζεται στην Techopedia, "Ένα διάγραμμα οντοτήτων-σχέσης (ERD) είναι μια τεχνική μοντελοποίησης δεδομένων που απεικονίζει γραφικά τις οντότητες ενός συστήματος πληροφοριών και τις σχέσεις μεταξύ αυτών των οντοτήτων." Ένα διάγραμμα ER περιγράφει τις διάφορες οντότητες που θα συμμετάσχουν στο σύστημά μας και καθορίζει όλες τις αλληλεπιδράσεις μεταξύ τους έτσι ώστε:

  • Οτιδήποτε είναι αφηρημένο ή φυσικό «πράγμα» γίνεται οντότητα σε ένα μοντέλο
  • Ένα μοντέλο αντιστοιχεί σε έναν πίνακα μέσα στη βάση δεδομένων μας
  • Ένα χαρακτηριστικό ή ιδιότητα μιας οντότητας μεταφράζεται σε ένα χαρακτηριστικό ενός μοντέλου, το οποίο με τη σειρά του είναι μια στήλη μέσα σε έναν πίνακα

Για παράδειγμα, εάν η οντότητά σας είναι χρήστης, τότε το αντίστοιχο μοντέλο θα ήταν "Χρήστης" με χαρακτηριστικά όπως όνομα_συστήματος, επώνυμο και διεύθυνση μέσα στη βάση δεδομένων, καθώς και αντίστοιχο πίνακα και στήλες.

Η χρήση μιας απλής αρχιτεκτονικής δεδομένων το καθιστά πολύ εύκολο να παρακολουθείτε τη βάση δεδομένων και την ανάπτυξη αρχείων κάθε φορά που δημιουργείται ένα νέο σχήμα.

3. Χρησιμοποιώντας το μοτίβο MVP

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

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

4. Σπάσιμο λογικής σε ενότητες

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

5. Η σημασία των περιπτώσεων δοκιμής

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

6. Η σημασία των κορμών

Τα αρχεία καταγραφής είναι χρήσιμα για τον εντοπισμό σφαλμάτων και την κατανόηση της κατάστασης της εφαρμογής σας. Παρέχουν πολύτιμες πληροφορίες για τη συμπεριφορά της εφαρμογής. Ακολουθεί μια γρήγορη λίστα πραγμάτων που πρέπει να θυμάστε όταν αξιοποιείτε αρχεία καταγραφής:

  • Βρείτε το σωστό υπόλοιπο όσον αφορά την καταγραφή. Το να έχετε «πάρα πολλές πληροφορίες» δεν είναι ποτέ κακό, αλλά η υπερβολική καταγραφή θα κάνει τη δουλειά σας πιο δύσκολη. Βελόνες είναι ευκολότερο να βρεθούν σε μικρότερα άχυρα. Από την άλλη πλευρά, η μη καταγραφή θα έχει ως αποτέλεσμα πολύ λίγες διαθέσιμες πληροφορίες για εντοπισμό σφαλμάτων ή διάγνωση.
  • Διαχωρίστε τα αρχεία καταγραφής εκτός σύνδεσης και διαδικτύου, όπου τα πιο πρόσφατα αρχεία καταγραφής διατηρούνται για γρήγορη ανάκτηση και επεξεργασία, ενώ τα παλαιότερα αρχεία καταγραφής αρχειοθετούνται ή απορρίπτονται σε αρχεία.
  • Λάβετε υπόψη τη συχνότητα και τη διάρκεια των αρχείων καταγραφής σας, καθώς θα επηρεάσει το μέγεθος του αποθηκευτικού χώρου που θα χρειαστείτε. Τις περισσότερες φορές το μέγεθος του χώρου αποθήκευσης που χρειάζεστε και ο αριθμός των αρχείων καταγραφής που έχετε είναι άμεσα ανάλογος.

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

7. Θα κλιμακωθεί η εφαρμογή;

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

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

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

Το New Tech Forum παρέχει έναν χώρο για να εξερευνήσετε και να συζητήσετε την αναδυόμενη τεχνολογία σε πρωτοφανές βάθος και εύρος. Η επιλογή είναι υποκειμενική, με βάση την επιλογή των τεχνολογιών που πιστεύουμε ότι είναι σημαντικές και έχουν μεγάλο ενδιαφέρον για τους αναγνώστες. δεν αποδέχεται ασφάλεια μάρκετινγκ για δημοσίευση και διατηρεί το δικαίωμα να επεξεργαστεί όλο το περιεχόμενο. Στείλτε όλες τις ερωτήσεις στο [email protected].

$config[zx-auto] not found$config[zx-overlay] not found