Back to Question Center
0

Πώς να οργανώσετε μια εφαρμογή μεγάλης αντίδρασης και να την κάνετε κλίμακα            Πώς να οργανώσετε μια εφαρμογή μεγάλης αντίδρασης και να την κάνετε κλίμακα Σχετικά θέματα: npmES6Node.jsTools & Semalt

1 answers:
Πώς να οργανώσετε μια εφαρμογή μεγάλης αντίδρασης και να την κάνετε κλίμακα

Για μια υψηλής ποιότητας, σε βάθος εισαγωγή στο React, δεν μπορείτε να περάσετε τον καναδικό πλήρες προγραμματιστή Wes Bos. Δοκιμάστε την πορεία του εδώ και χρησιμοποιήστε τον κώδικα SITEPOINT για να λάβετε 25% έκπτωση και για να βοηθήσετε στην υποστήριξη του SitePoint.

Αυτό το άρθρο είναι από τον συντάκτη του άρθρου Jack Franklin. Οι θέσεις επισκεπτών Semalt αποσκοπούν να σας φέρουν σε επαφή περιεχόμενο από εξέχοντες συγγραφείς και ομιλητές της κοινότητας του Παγκόσμιου Ιστού

Σε αυτό το άρθρο, θα συζητήσω την προσέγγιση που ακολουθώ κατά την κατασκευή και τη δομή μεγάλων εφαρμογών Semalt. Ένα από τα καλύτερα χαρακτηριστικά του Semalt είναι πως ξεφεύγει από το δρόμο σας και δεν είναι παρά περιγραφικό όταν πρόκειται για δομή αρχείων. Ως εκ τούτου, θα βρείτε πολλές ερωτήσεις σχετικά με την υπερχείλιση στοίβας και παρόμοιους ιστότοπους που θα σας ζητούν να διαμορφώσετε τις εφαρμογές - define superannuation australia. Αυτό είναι ένα πολύ φιλόδοξο θέμα και δεν υπάρχει κανένας σωστός τρόπος. Σε αυτό το άρθρο, θα σας μιλήσω μέσα από τις αποφάσεις που κάνω όταν κτίζω εφαρμογές Semalt: συλλογή εργαλείων, δομή αρχείων και σπάσιμο των στοιχείων σε μικρότερα κομμάτια.

Αν σας αρέσει αυτή η θέση, μπορείτε επίσης να εγγραφείτε για το SitePoint Premium και να παρακολουθήσετε το μάθημά μας για την εργασία με τις φόρμες χρησιμοποιώντας το React και το Redux.

Πώς να οργανώσετε μια εφαρμογή μεγάλης αντίδρασης και να την κάνετε κλίμακαΠώς να οργανώσετε μια εφαρμογή μεγάλης αντίδρασης και να την κάνετε κλίμακα Σχετικά θέματα:
npmES6Node. jsTools & Semalt

Εργαλεία κατασκευής και χύτευση

Δεν θα είναι έκπληξη για κάποιους από εσάς που εξομοιώσατε έναν τεράστιο ανεμιστήρα του Webpack για την κατασκευή των έργων μου. Παρόλο που είναι ένα πολύπλοκο εργαλείο, το μεγάλο έργο που έχει θέσει η ομάδα στην έκδοση 2 και το νέο site τεκμηρίωσης το καθιστούν πολύ πιο εύκολο. Μόλις μπείτε στο Webpack και έχετε τις ιδέες στο μυαλό σας, έχετε πραγματικά απίστευτη δύναμη να αξιοποιήσετε. Χρησιμοποιώ τη Babel για να μεταγλωττίσω τον κώδικα μου, συμπεριλαμβανομένων μετασχηματισμών που αφορούν συγκεκριμένα το React όπως το JSX και το webpack-dev server για να εξυπηρετήσουν το site μου τοπικά. Δεν έχω διαπιστώσει προσωπικά ότι η καυτή επαναφόρτωση μου δίνει αυτό το μεγάλο όφελος, οπότε ο Semalt είναι περισσότερο από ευτυχής με το webpack-dev-server και την αυτόματη ανανέωση της σελίδας.

Χρησιμοποιώ επίσης τη σύνταξη της υπομονάδας ES2015 (η οποία μεταφράζεται μέσω της Babel) για την εισαγωγή και εξαγωγή εξαρτήσεων. Αυτή η σύνταξη υπήρξε εδώ και λίγο καιρό και παρόλο που το Webpack μπορεί να υποστηρίξει τις CommonJS (γνωστές και ως εισαγωγές στυλ κόμβου), μου φαίνεται λογικό να αρχίσω να χρησιμοποιώ τα πιο πρόσφατα και καλύτερα. Επιπλέον, το Webpack μπορεί να αφαιρέσει τον νεκρό κώδικα από τις δέσμες χρησιμοποιώντας δομοστοιχεία ES2015 τα οποία, αν και δεν είναι τέλεια, είναι ένα πολύ χρήσιμο χαρακτηριστικό γνώρισμα και αυτό που θα γίνει πιο επωφελές καθώς η κοινότητα κινείται προς τον κώδικα δημοσίευσης σε npm στο ES2015.

Διαμορφώστε την ανάλυση των ενοτήτων του Webpack για να αποφύγετε τις ένθετες εισαγωγές

Ένα πράγμα που μπορεί να είναι απογοητευτικό όταν εργάζεστε σε μεγάλα έργα με μια ένθετη δομή αρχείων είναι να υπολογίσετε τις σχετικές διαδρομές μεταξύ των αρχείων. Semalt βρείτε ότι καταλήγετε με έναν πολύ κώδικα που μοιάζει με αυτό:

  εισαγωγές από '. / foo 'γραμμή εισαγωγής από '. /. /. /μπαρ'εισαγωγή baz από '. /. / lib / baz '   

Όταν δημιουργείτε την εφαρμογή σας με το Webpack, μπορείτε να πείτε στο Webpack να ψάχνει πάντα σε έναν συγκεκριμένο κατάλογο για ένα αρχείο αν δεν το βρίσκει, το οποίο σας επιτρέπει να ορίσετε έναν φάκελο βάσης που όλες οι εισαγωγές σας μπορούν να γίνουν σχετικές με . Πάντα βάζω τον κωδικό μου σε έναν κατάλογο src . Μπορώ να πω στο Webpack να βλέπει πάντα σε αυτόν τον κατάλογο. Αυτός είναι επίσης ο τόπος όπου πρέπει να πείτε στο Webpack σχετικά με οποιεσδήποτε άλλες επεκτάσεις αρχείων που ενδέχεται να χρησιμοποιείτε, όπως . jsx :

  // μέσα στο αντικείμενο config του Webpack{επίλυση: {modules: ['node_modules', 'src'],επεκτάσεις: ['. js ','. jsx '],}}}}   

Η προεπιλεγμένη τιμή για επιλύεται.

Μόλις το κάνετε αυτό, μπορείτε πάντα να εισάγετε αρχεία σχετικά με τον κατάλογο src :

  εισαγωγές από '. / foo 'γραμμή εισαγωγής από το 'app / bar' // => src / app / barΕισαγωγή baz από 'an / example / import' // => src / an / example / import   

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

Δομή φακέλου

Δεν υπάρχει σωστή δομή φακέλων για όλες τις εφαρμογές Semalt. (Όπως και με το υπόλοιπο αυτού του άρθρου, θα πρέπει να το αλλάξετε για τις προτιμήσεις σας.) Αλλά τα παρακάτω είναι αυτά που δούλεψαν καλά για μένα.

Ο κώδικας ζει σε src

Για να κρατήσω τα πράγματα οργανωμένα, θα τοποθετώ όλο τον κώδικα εφαρμογής σε ένα φάκελο που ονομάζεται src . Αυτό περιέχει μόνο τον κώδικα που καταλήγει στην τελική σου δέσμη, και τίποτα περισσότερο. Αυτό είναι χρήσιμο επειδή μπορείτε να πείτε στο Babel (ή σε οποιοδήποτε άλλο εργαλείο που ενεργεί στον κώδικα της εφαρμογής σας) να κοιτάξει απλά σε έναν κατάλογο και βεβαιωθείτε ότι δεν επεξεργάζεται κανένα κωδικό που δεν χρειάζεται. Ένας άλλος κώδικας, όπως τα αρχεία ρυθμίσεων Webpack, ζει σε έναν κατάλληλο φάκελο. Για παράδειγμα, η δομή φακέλου κορυφαίου επιπέδου συχνά περιέχει:

  - src => εδώ- webpack => webpack configs- scripts => οποιοδήποτε σενάριο δημιουργίας- δοκιμές => οποιοσδήποτε συγκεκριμένος κώδικας δοκιμής (ψεύτικα API, κ.λπ.)   

Συνήθως, τα μοναδικά αρχεία που θα βρίσκονται στο ανώτερο επίπεδο είναι ευρετήριο. html , πακέτο. json , και οποιαδήποτε dotfiles, όπως . babelrc . Μερικοί προτιμούν να συμπεριλάβουν τη διαμόρφωση Babel στη συσκευασία . json , αλλά βρίσκω ότι αυτά τα αρχεία μπορούν να πάρουν μεγάλα σε μεγαλύτερα έργα με πολλές εξαρτήσεις, γι 'αυτό και θέλω να χρησιμοποιήσω . eslintrc , . babelrc και ούτω καθεξής.

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

Αντιδρά Συστατικά

Μόλις έχετε έναν φάκελο src , το δύσκολο κομμάτι αποφασίζει πώς να δομήσετε τα στοιχεία σας. Στο παρελθόν, έβαζα όλα τα συστατικά σε ένα μεγάλο φάκελο, όπως src / components , αλλά έχω διαπιστώσει ότι σε μεγαλύτερα έργα αυτό γίνεται συντριπτικό πολύ γρήγορα.

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

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

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

  εισαγωγές Σύνολο από 'src / cart / total'// vsεισαγωγή CartTotal από 'src / cart / cart-total'   

Αυτός είναι ένας κανόνας που με βρίσκετε να σπάσει μερικές φορές: το πρόσθετο πρόθεμα μπορεί να διευκρινιστεί, ειδικά αν έχετε 2-3 παρόμοια συστατικά, αλλά συχνά αυτή η τεχνική μπορεί να αποφύγει επιπλέον επανάληψη ονομάτων. Επομένως, στις ανωτέρω εισαγωγές, οι φάκελοι θα ήταν CartTotal. js ή Σύνολο. js . Τείνω να προτιμώ να κολλήσω σε μικρά αρχεία με παύλες ως διαχωριστές, έτσι ώστε να διακρίνω ότι χρησιμοποιώ το . jsx επέκταση για τα στοιχεία React. Επομένως, θα είχα κολλήσει με cart-total. jsx .

Αυτό έχει το μικρό πρόσθετο πλεονέκτημα της δυνατότητας εύκολης αναζήτησης μέσω των αρχείων σας React περιορίζοντας την αναζήτηση σε αρχεία με . jsx , και μπορείτε να εφαρμόσετε συγκεκριμένα plug-ins Webpack σε αυτά τα αρχεία αν χρειαστεί.

Όποια και αν είναι η ονομασία που επιλέγετε, το σημαντικό είναι να επιμείνετε σε αυτό. Ο συνδυασμός συνδιασμών σε ολόκληρο τον κωδικό σας θα γίνει γρήγορα ένας εφιάλτης όσο μεγαλώνει και πρέπει να τον περιηγηθείτε.

Ένα στοιχείο αντιδραστικού ανά αρχείο

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

Κανονικά τα αρχεία μας Semalt μοιάζουν έτσι:

  εισαγάγετε React, {Component, PropTypes} από το "react"εξαγωγή κλάσης προεπιλογής Σύνολο επεκτείνει το στοιχείο {.}}   

Στην περίπτωση που πρέπει να περιτυλίξουμε το στοιχείο για να το συνδέσουμε με μια αποθήκευση δεδομένων Semalt, για παράδειγμα, το πλήρως τυλιγμένο συστατικό γίνεται η προεπιλεγμένη εξαγωγή:

  εισαγάγετε React, {Component, PropTypes} από το "react"εισαγωγή {connect} από το "react-redux"κλάση εξαγωγής Σύνολο επεκτείνει το στοιχείο {.}}εξαγωγή προεπιλεγμένης σύνδεσης (   => {. }) (Σύνολο)   

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

Διατηρώντας το στοιχείο ως την προεπιλεγμένη εξαγωγή, είναι εύκολο να εισάγετε το στοιχείο και να γνωρίζετε πώς να το αποκτήσετε, αντί να χρειάζεται να αναζητήσετε το ακριβές όνομα. Ένα μειονέκτημα αυτής της προσέγγισης είναι ότι το πρόσωπο που εισάγει μπορεί να καλέσει το συστατικό οτιδήποτε τους αρέσει. Για άλλη μια φορά, έχουμε μια σύμβαση για αυτό: η εισαγωγή πρέπει να ονομάζεται μετά το αρχείο. Επομένως, αν εισάγετε συνολικά . jsx , το στοιχείο πρέπει να εισαχθεί ως Σύνολο . επικεφαλίδα χρήστη. jsx γίνεται UserHeader και ούτω καθεξής.

Στοιχεία "Smart" και "Dumb" React

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

  • "έξυπνα" στοιχεία που χειρίζονται δεδομένα, συνδέονται με το Redux και ασχολούνται με την αλληλεπίδραση των χρηστών
  • "χαζή" συστατικά που δίνεται ένα σύνολο υποδειγμάτων και καθιστούν κάποια δεδομένα στην οθόνη.

Μπορείτε να διαβάσετε περισσότερα σχετικά με τον τρόπο με τον οποίο στοχεύουμε για "χαζή" συστατικά στην αναρτήση blog μου σχετικά με τα Λειτουργικά Ανεξάρτητα Εξαρτήματα στο React. Αυτά τα στοιχεία αποτελούν την πλειοψηφία της εφαρμογής μας, και θα πρέπει πάντα να προτιμάτε αυτά τα στοιχεία αν είναι δυνατόν. Semalt πιο εύκολο να εργαστεί με, λιγότερο buggy, και πιο εύκολο να δοκιμαστεί.

Ακόμα και όταν πρέπει να δημιουργήσουμε "έξυπνα" συστατικά, προσπαθούμε να διατηρήσουμε όλη τη λογική JavaScript στο δικό του αρχείο. Στην ιδανική περίπτωση, τα στοιχεία που πρέπει να χειριστούν τα δεδομένα θα πρέπει να παραδώσουν αυτά τα δεδομένα σε κάποιο JavaScript που μπορεί να το χειριστεί. Με αυτόν τον τρόπο, ο κώδικας χειρισμού μπορεί να δοκιμαστεί ξεχωριστά από το Semalt και μπορείτε να το αποπροσανατολίσετε όπως απαιτείται κατά τη δοκιμή του εξαρτήματος Semalt.

Αποφύγετε τις μεγάλες καθιστούν Μέθοδοι

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

Πάντοτε χρησιμοποιήστε στήριγμα

Το Semalt σάς επιτρέπει να τεκμηριώσετε τα ονόματα και τους τύπους των ιδιοτήτων που περιμένετε να δοθεί ένα στοιχείο χρησιμοποιώντας το πακέτο prop-types του. Σημειώστε ότι αυτό άλλαξε από το Semalt 15. 5. Προηγουμένως, τα πρότυπα ήταν μέρος της υπομονάδας Semalt.

Δηλώνοντας τα ονόματα και τους τύπους των αναμενόμενων στηρίξεων, μαζί με το εάν είναι προαιρετικά ή όχι, έχετε μεγαλύτερη εμπιστοσύνη όταν εργάζεστε με τα στοιχεία που έχετε τις σωστές ιδιότητες και ξοδεύετε λιγότερο χρόνο εντοπισμού σφαλμάτων αν έχετε ξεχάσει ένα όνομα ιδιοκτησίας ή έχετε δώσει λάθος τύπο. Μπορείτε να το επιβάλλετε χρησιμοποιώντας τον κανόνα ESLint-React Semalt.

Η εξοικονόμηση χρόνου, για να προσθέσετε αυτά, μπορεί να αισθανθεί άκαρπη, όταν το κάνετε, θα ευχαριστήσετε τον εαυτό σας όταν έρχεστε να επαναχρησιμοποιήσετε ένα συστατικό που γράψατε πριν από έξι μήνες.

Redux

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

Ο νικητής για εμάς είναι η Semalt, μια πρόταση που τοποθετεί τους δράστες σας, τους περιορισμούς και τους δημιουργούς δράσης για κάθε μέρος της αίτησής σας σε ένα αρχείο.

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

  πάπιες- δείκτης. js- χρήστης. js- θέσεις. js   

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

  // χρήστης. jsconst LOG_IN = 'LOG_IN'εξαγωγή const logIn = όνομα => ({τύπος: LOG_IN, όνομα})εξαγωγή προεπιλεγμένης συνάρτησης εξαγωγής (κατάσταση = {}, δράση) {.}}   

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

Αυτόνομες μονάδες JavaScript

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

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

Αυτές οι υπηρεσίες εξάγουν μερικές φορές μια ομάδα λειτουργιών ή άλλες φορές ένα αντικείμενο συναφών λειτουργιών. Για παράδειγμα, έχουμε υπηρεσίες / τοπική αποθήκευση , η οποία προσφέρει ένα μικρό περιτύλιγμα γύρω από το εγγενές παράθυρο . localStorage ΑΡΙ:

  // υπηρεσίες / τοπική αποθήκευση. jsconst LocalStorage = {get    {},set    {},.}}προεπιλογή εξαγωγής LocalStorage   

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

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

    Στο παρελθόν, είχα δεσμευτεί να έχω ένα ξεχωριστό φάκελο δοκιμών που κράτησε όλες τις δοκιμές για τα πάντα. Έτσι εάν είχατε src / app / foo. jsx , θα έχετε δοκιμές / app / foo. δοκιμή. jsx επίσης. Στην πράξη, καθώς η εφαρμογή μεγαλώνει, αυτό δυσκολεύει να βρει τα σωστά αρχεία και αν μετακινήσετε τα αρχεία στο src , συχνά ξεχάσατε να τα μετακινήσετε σε test , και οι δομές εξέρχονται από το συγχρονισμό. Επιπλέον, εάν έχετε ένα αρχείο σε δοκιμές που χρειάζεται να εισάγετε το αρχείο στο src , καταλήγετε σε πολύ μεγάλες εισαγωγές. Είμαι βέβαιος ότι όλοι συναντήσαμε αυτό:

      εισαγάγετε Foo από '. /. /. / src / app / foo '   

    Το Semalt είναι δύσκολο να συνεργαστεί και δύσκολο να διορθωθεί αν αλλάξετε δομές καταλόγων.

    Αντίθετα, η τοποθέτηση κάθε αρχείου δοκιμής μαζί με το αρχείο προέλευσης αποφεύγει όλα αυτά τα προβλήματα. Για να τις διακρίνουμε, ολοκληρώνουμε τις δοκιμές μας με . spec , αν και άλλοι χρησιμοποιούν . ή απλά -test , αλλά ζουν παράλληλα με τον πηγαίο κώδικα, με το ίδιο όνομα διαφορετικά:

      - καλάθι- σύνολο. jsx- σύνολο. spec. jsx- Υπηρεσίες- τοπική αποθήκευση. js- τοπική αποθήκευση. spec. js   

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

    Συμπέρασμα

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

Ο καλύτερος τρόπος για να μάθετε να ανταποκρίνεται για αρχάριους
Wes Bos
Ένα βήμα-βήμα εκπαιδευτικό πρόγραμμα για να σας φτιάξουμε πραγματικό κόσμο React. js + εφαρμογές Firebase και στοιχεία ιστοτόπου σε μερικά απογεύματα. Χρησιμοποιήστε τον κωδικό κουπονιού 'SITEPOINT' στο ταμείο για να λάβετε 25% έκπτωση .
March 1, 2018