Μια σύγκριση μεταξύ Vulcan και AUSK: πώς να χρησιμοποιήσετε το Node, το React και το GraphQL στο μέγιστο των δυνατοτήτων τους

Η στοίβα NRG για ταχύτερη ανάπτυξη

Πιθανότατα δεν έχετε ακούσει ποτέ ούτε Vulcan.js ούτε Apollo Universal Starter Kit - τουλάχιστον όχι ακόμα.

Αλλά είμαι σίγουρος ότι έχετε ακούσει για το React, το Node.js και το GraphQL. Εντάξει, αυτό λέμε υποεκτίμηση: πιθανότατα έχετε δει εκατομμύρια tweets, άρθρα blog, συναντήσεις και podcast για αυτά τα τρία και τις μαγικές τους δυνάμεις.

Υπάρχουν πολλοί καλοί λόγοι για τους οποίους αυτές οι τεχνολογίες επαινούνται από προγραμματιστές ιστού Ωστόσο, εάν προσπαθήσατε ποτέ να γράψετε μια σύγχρονη εφαρμογή πλήρους στοίβας JavaScript από το μηδέν, ίσως έχετε παρατηρήσει την ποσότητα της πλάκας boiler που μπορεί να παράγει.

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

Τόσο το Vulcan.js όσο και το AUSK στοχεύουν να σας κάνουν έναν γρήγορο και αποτελεσματικό προγραμματιστή JavaScript πλήρους στοίβας. Και οι δύο βασίζονται σε μια αρθρωτή αρχιτεκτονική, με το React για το περιβάλλον χρήστη, τον κόμβο για το backend και το Apollo graphQL για το επίπεδο επικοινωνίας πελάτη / διακομιστή. Και οι δύο παρέχουν τόνους προ-κωδικοποιημένων ενοτήτων, ώστε να μπορείτε να εστιάσετε σε πολύτιμα χαρακτηριστικά

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

Πρώτα απ 'όλα ας παρουσιάσουμε τους ανταγωνιστές.

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

Apollo UNIVERSAL Starter Kit

Εντάξει, όταν λένε καθολικά, εννοούν το UNIVERSAL Έχετε δει ποτέ μια πλακέτα JavaScript που περιλαμβάνει διακομιστή Scala για μεγάλη δουλειά; Και μια πλήρη ρύθμιση React Native με το Expo; Κλείνουν ακόμη και την αιώνια (και ενοχλητική) συζήτηση Γωνιακού έναντι Αντιδρών υποστηρίζοντας και τα δύο.

Δεν έχω πολλά να πω. Θέλω να πω, κοιτάξτε ξανά σε αυτό το stack, αυτό είναι το πιο τρελό όνειρο ενός προγραμματιστή ιστού!

Στην πραγματικότητα έχω κάτι να προσθέσω: περιλαμβάνει επίσης Bootstrap και Ant Design ως πλαίσια styling, Knex για σύνδεση σε βάση δεδομένων SQL (η σύνδεση MongoDB δεν περιλαμβάνεται αλλά μπορεί να γίνει εύκολα) και είναι γραμμένη σε TypeScript. Όλα τα βασικά χαρακτηριστικά μιας εφαρμογής JS / GraphQL παρέχονται στο boilerplate (μενού, εξουσιοδότηση κ.λπ.) + μερικές ενότητες υψηλότερου επιπέδου που χρησιμεύουν ως παραδείγματα.

Σύνδεσμος: //github.com/sysgears/apollo-universal-starter-kit

Vulcan: πέρα ​​από το καθολικό, ισομορφικό

Θυμάστε το Μετέωρο και το Τηλεσκόπιο; Ξέρω ότι το οικοσύστημα JS κινείται γρήγορα, αλλά αυτή η χρυσή εποχή ήταν όπως πριν από 2 ή 3 χρόνια.

Το Meteor ήταν το πρώτο πλαίσιο που εκμεταλλεύτηκε πλήρως το συνδυασμό JavaScript από διακομιστή και πελάτη, επιτρέποντας τη σύνταξη ισομορφικού κώδικα που εκτελείται και στα δύο περιβάλλοντα. Το Telescope ήταν μια εφαρμογή Meteor boilerplate με σκοπό να απολαύσει πλήρως την αρχιτεκτονική της με προσανατολισμό το πακέτο.

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

Και δεν έχω ανακαλύψει ακόμα ένα πλαίσιο που κάνει τους devs μισούς τόσο παραγωγικούς όσο ο Meteor. Αλλά μην ανησυχείτε, υπάρχει τώρα ένας σοβαρός διεκδικητής. Το παίρνετε: Vulcan!

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

Το Vulcan προορίζεται να είναι οι ράγες του οικοσυστήματος JavaScript. Εύκολο να ξεκινήσετε αλλά αρκετά αρκετά για να γράψετε οποιαδήποτε εφαρμογή.

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

Σύνδεσμος: //vulcanjs.org/

# 1: Πλαίσιο VS Boilerplate

Πρώτη μεγάλη διαφορά μεταξύ αυτών των εργαλείων: Το AUSK είναι ένα boilerplate, ενώ το Vulcan είναι ένα πλαίσιο. Πού βρίσκεται η διάκριση, ίσως αναρωτιέστε;

Vulcan, ένα πλαίσιο

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

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

Ο περιορισμός με τα πλαίσια ή τις απελευθερώσεις είναι ότι μπορεί να αισθανθείτε χαμένοι όταν σας εγκαταλείψουν. Τι κάνετε όταν το σφάλμα δεν βρίσκεται στην εφαρμογή σας, αλλά στο React ή στο Apollo;

Ο βασικός κανόνας μου είναι ότι όταν χρησιμοποιείτε ένα πλαίσιο, θα πρέπει να είστε έτοιμοι να συμβάλλετε στην ανάπτυξή του, τουλάχιστον ανοίγοντας ζητήματα όποτε συναντάτε ένα σφάλμα.

AUSK, βραστήρα

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

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

Το boilerplate είναι πολύ μεγαλύτερη ελευθερία από ένα πλαίσιο αλλά και λιγότερο αντίκτυπο στην αποδοτικότητά σας.

# 2 Εκμάθηση καμπύλης

Vulcan: Το GraphQL έγινε εύκολο

Το Vulcan μπορεί να είναι ένας καλός τρόπος για να αποκτήσετε μια πρώτη κατανόηση του GraphQL επειδή… δεν χρειάζεται να γράψετε πραγματικά GraphQL. Το πλαίσιο δημιουργεί το σχήμα GraphQL και τους αναλυτές για εσάς βάσει του μοντέλου δεδομένων σας. Χρησιμοποιώντας εργαλεία προγραμματιστών όπως το GraphiQL ή το GraphQL Voyager, μπορείτε να οπτικοποιήσετε και να παίξετε με το σχήμα για να κατανοήσετε πώς μεταφράζονται οι δυνατότητές σας σε GraphQL.

Το δεύτερο βήμα είναι να κατανοήσουμε τη λογική του ίδιου του Vulcan. Ένα ζωντανό σεμινάριο περιλαμβάνεται στην εφαρμογή "Vulcan Starter" για να σας βοηθήσει στη διαδικασία.

AUSK: για καθαριστές

Η αρχιτεκτονική AUSK είναι πολύ πιο κοντά σε αυτό που έχουν συνηθίσει οι προγραμματιστές Express. Σκεφτείτε την κανονική σας εφαρμογή Express, αλλά με εγκατεστημένο το GraphQL και μια αρχιτεκτονική που βασίζεται σε πακέτα. Οχι εκπλήξεις.

Αυτό σημαίνει επίσης ότι θα πρέπει να κατανοήσετε τα βασικά του GraphQL για να χρησιμοποιήσετε το AUSK, επιπλέον φυσικά για το Node, το Express και το React και οποιαδήποτε βάση δεδομένων χρησιμοποιείτε (αλλά το ίδιο ισχύει και για το Vulcan). Ευτυχώς, παρέχει μερικά παραδείγματα για να σας βοηθήσει στη διαδικασία, συμπεριλαμβανομένης της δημιουργίας και της καταχώρισης δεδομένων και ακόμη και της μεταφόρτωσης αρχείων.

Συμπέρασμα: Οι προγραμματιστές πλήρους στοίβας έχουν πολλά να κυριαρχήσουν

Το οικοσύστημα JavaScript ωριμάζει όλο και περισσότερο, πράγμα που σημαίνει επίσης ότι είναι πιο δύσκολο να μάθετε και να κατανοήσετε για αρχάριους.

Για να απολαύσετε πλήρως αυτές τις τεχνολογίες, θα χρειαστείτε τουλάχιστον κάποια γνώση της σύγχρονης ανάπτυξης JavaScript και React.

Μην περιμένετε να είστε πλήρως παραγωγικοί την πρώτη ημέρα. Τούτου λεχθέντος, υπάρχουν πολλά μαθήματα, δωρεάν ή επί πληρωμή, για να μάθετε τη σύγχρονη ανάπτυξη πλήρους στοίβας JavaScript. Η μελέτη των AUSK και Vulcan μπορεί να είναι μια απίστευτη πηγή έμπνευσης.

# 3 Ταχύτητα ανάπτυξης

Vulcan: αυτοματοποιήστε όλα τα πράγματα

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

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

AUSK: περισσότερη ελευθερία

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

  • γράψτε το σχήμα GraphQL σας
  • ίδιο για επιλυτές, μεταλλάξεις
  • ίδιο για το μοντέλο της βάσης δεδομένων σας (χρησιμοποιώντας Knex ή Mongoose)
  • ίδιο για τα στοιχεία του React

Ωστόσο,Αν χρειαστεί να γράψετε μια προσαρμοσμένη λειτουργία, θα είναι πιο εύκολο με το AUSK παρά με το Vulcan. Έτσι, εάν έχετε πολύ λίγα μοντέλα δεδομένων, αλλά περίπλοκα χαρακτηριστικά, το AUSK θα είναι πιο αποτελεσματικό από το Vulcan.

Ας ελπίσουμε ότι υπάρχουν συνεχείς εργασίες για να καταστεί το AUSK πιο δηλωτικό, μέσω ενός καινοτόμου συστήματος σχήματος εμπνευσμένου από το Domain Driven Design, του domain-schema.

Συμπέρασμα: επιλέξτε το σωστό εργαλείο για τη σωστή περίπτωση χρήσης

Δεν υπάρχει μαγική καθολική τεχνολογία για πλήρη ανάπτυξη JS. Η ταχύτητα ανάπτυξης με κάθε πλαίσιο εξαρτάται πολύ από την υποκείμενη περίπτωση χρήσης. Τείνω να προτιμώ το Vulcan για πλατφόρμες προσανατολισμένες σε δεδομένα και επαγγελματικά εργαλεία και το AUSK για πλατφόρμες B2C SaaS που απαιτούν περισσότερες προσαρμοσμένες λειτουργίες.

# 4 Κοινότητα, υποστήριξη και ωριμότητα

Vulcan: κληρονόμος του Μετεώρου

Το Vulcan είναι ένα πλαίσιο της Sacha Greif, ο οποίος είναι μακροχρόνιος προγραμματιστής Meteor και έχει επενδύσει πολύ στην κοινότητα JavaScript (State of JS και State of CSS μεταξύ άλλων).

Υπάρχει ένα ενεργό Slack όπου οι αρχάριοι και άλλοι λάτρεις μπορούν να βρουν γρήγορα απαντήσεις στις ερωτήσεις τους.

AUSK: ένα ενεργά συντηρημένο έργο

Το AUSK διατηρείται από τη SysGears, ιδίως από τον Victor Vlasenko, τον ιδρυτή της εταιρείας.

Το έργο σχετίζεται με το Gitter. Κατά τη διάρκεια της τελευταίας μου ανεξάρτητης αποστολής με την AUSK, ο Victor απάντησε πολύ γρήγορα στα ζητήματα και τις ερωτήσεις μου. Συγχώνευσε ακόμη και την υποστήριξη του Storybook αφού το έδωσα.

Συμπέρασμα: μικρές αλλά πλούσιες κοινότητες

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

Εάν πρέπει να δημιουργήσετε μια ομάδα, μην περιμένετε να βρείτε ελεύθερους επαγγελματίες που γνωρίζουν ακριβώς αυτές τις τεχνολογίες, είναι πολύ συγκεκριμένες. Αντίθετα, εστιάστε στην εύρεση προγραμματιστών JavaScript πλήρους στοίβας που θα μπορούν να τις μάθουν γρήγορα. Εναλλακτικά, μπορείτε να μεταβείτε στην πηγή και να βρείτε πραγματικούς ειδικούς μεταξύ των κοινοτήτων Vulcan ή AUSK.

# 5 Ανάπτυξη

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

# 6 Επεκτασιμότητα κώδικα και αρθρωτά μοτίβα

Vulcan: μοιραστείτε τις προσπάθειες

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

Η Vulcan παρέχει μοτίβα όπως επιστροφές κλήσεων / άγκιστρα, βελτίωση και κεντρική εγγραφή για να επωφεληθείτε πλήρως από την αρχιτεκτονική της με προσανατολισμό στα πακέτα. Για παράδειγμα, μπορούμε να προσθέσουμε Υλικό UI σε μια εφαρμογή, συμπεριλαμβανομένου του SSR, χωρίς να αλλάξουμε ούτε μία γραμμή κώδικα στην ενότητα Vulcan Core.

Πιο συγκεκριμένα, το Vulcan παρέχει διαφορετικές registerμεθόδους για κάθε δομή δεδομένων, όπως registerComponent, και επίσης επιστροφές κλήσεων, όπως router.wrapperπου επιτρέπουν την αναδίπλωση του Appσυστατικού ρίζας React. Πρέπει να εισαγάγετε το αρχείο σας μόνο μία φορά στο επίπεδο εισαγωγής πακέτου ( mainαρχεία).

AUSK: ξεκινήστε στο σωστό δρόμο, τελειώστε μόνοι σας

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

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

 export default new ServerModule({ onAppCreate: [ callback1, callback2] }) 

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

Αυτό είναι ένα σχετικά καθαρό σχέδιο και μια πολύ έξυπνη αρχιτεκτονική. Θέλω να πω, ακόμη και ο διαχειριστής του module είναι ένα module, δεν είναι τόσο όμορφο;

Αλλά τα υπόλοιπα εξαρτώνται από εσάς. Ωραία, θα μπορείτε να βελτιστοποιήσετε τα πάντα! Λοιπόν, θα χάσετε το ζεύγος των επιλυτών GraphQL και της βάσης δεδομένων Mongo; Χρησιμοποιώντας ποια εργαλεία; Πώς μετατρέπετε το σχήμα GraphQL σε προβολές Mongo; Πρόκειται να γράψετε συνδέσμους, να χρησιμοποιήσετε το DataLoader;

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

Συμπέρασμα: αποφεύγετε τον κίνδυνο;

Και για το AUSK και το Vulcan, η επεκτασιμότητα κώδικα σημαίνει αρθρωτή αρχιτεκτονική. Όποτε ο κώδικας γίνεται πολύπλοκος ή δυσανάγνωστος, η λύση είναι εύκολη: κόψτε το σε μικρότερα, απλούστερα κομμάτια.

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

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

# 6 Κινητό

Vulcan: με την Κόρδοβα

Ο Meteor, στον οποίο βασίζεται η Vulcan, ενσωματώνει την Cordova. Έτσι, η εφαρμογή ιστού σας μπορεί να ομαδοποιηθεί ως εφαρμογή για κινητά με μία μόνο γραμμή εντολών.

Ωστόσο, η Vulcan δεν παρέχει εργαλεία για εγγενείς εφαρμογές. Φυσικά μπορείτε ακόμα να δημιουργήσετε μια ανεξάρτητη εφαρμογή React Native και να την συνδέσετε στο Vulcan. Προβλέπονται βελτιώσεις στο σύστημα auth (επί του παρόντος το τελευταίο κομμάτι της Vulcan που βασίζεται πραγματικά στον Meteor) τους προσεχείς μήνες για να διευκολυνθούν τέτοιες συνδέσεις.

AUSK: με το React Native

Ο συνδυασμός και των δύο ρυθμίσεων για το “vanilla” React και το React Native είναι ένα από τα καλύτερα χαρακτηριστικά του AUSK. Σε τελική ανάλυση, είναι ένα Universal starter kit! Δεν κάνω πολλά κινητά μόνα μου, αλλά είναι καθησυχαστικό να μπορώ να δημιουργήσω γρήγορα μια εγγενή εφαρμογή για κινητά που μοιράζεται τον ίδιο διακομιστή με τη διεπαφή ιστού.

Συμπέρασμα: Το AUSK είναι καλύτερο στο κινητό

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

# 7 Αλλάξτε το περιβάλλον εργασίας χρήστη: ένα δύσκολο πρόβλημα

Η δημιουργία ενός πλαισίου πλήρους στοίβας που επιτρέπει την άμεση αλλαγή της βιβλιοθήκης UI είναι ένα όνειρο που επιτυγχάνεται μόνο κατά την εποχή του CSS. Θυμάστε εκείνους τους ιστότοπους που επέτρεψαν την εναλλαγή θέματος κάνοντας κλικ σε ένα μόνο κουμπί;

Τότε τα έθνη JS επιτέθηκαν. Χρησιμοποιώντας στοιχεία React, είναι πολύ δύσκολο να παρέχουμε ένα τέτοιο χαρακτηριστικό (εκτός από ασήμαντες αλλαγές χρώματος), επειδή το στυλ και ο σχεδιασμός είναι πλέον πολύ συνδεδεμένοι με τα υποκείμενα στοιχεία React / Angular / Vue.

Κάθε ReI UI lib έχει τον δικό του τρόπο να ορίζει ένα κουμπί, χωρίς καν να μιλά για θέμα. Αυτό είναι ένα πρόβλημα για τεχνολογίες πλήρους στοίβας, όπως το AUSK και το Vulcan, επειδή η επιλογή ενός πλαισίου στυλ είναι θέμα γούστου. Δεν μπορούν απλώς να προτείνουν μια οριστική επιλογή και να σας αναγκάσουν να τηρήσετε. Το Bootstrap δεν είναι πλέον μονοπώλιο και κάθε προγραμματιστής έχει το δικό του αγαπημένο lib.

Για την αντιμετώπιση αυτού του ζητήματος, και οι δύο έχουν παρόμοια προσέγγιση. Έγραψαν ένα κανονικό σύνολο συστατικών με το Bootstrap, και στη συνέχεια προσπάθησαν να επιτρέψουν την αντικατάσταση αυτών των στοιχείων με μια άλλη βιβλιοθήκη όπως το Ant Design ή το Material UI.

Κάνει τον κώδικα παράξενο. Για παράδειγμα, το κουμπί AUSK θα πάρει ένα colorστήριγμα, γιατί έτσι λειτουργεί το Bootstrap. Εάν μεταβείτε στο Ant Design, θα χρειαστεί επίσης να χρησιμοποιήσετε το έγχρωμο στήριγμα, ακόμα κι αν το Ant Design χρησιμοποιεί ένα typeστήριγμα.

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

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

Αντ 'αυτού, χρησιμοποιήστε τα υποκείμενα στοιχεία που παρέχονται από το Ant Design ή το Bootstrap ή το UI υλικού ανάλογα με την επιλογή σας και προσπαθήστε να γράψετε τη δική σας βιβλιοθήκη. Θα μπορούσατε να ελέγξετε το Storybook για να σας βοηθήσει στη διαδικασία, καθώς περιλαμβάνεται τόσο στο AUSK όσο και στο Vulcan.

# 8 ΔΩΡΕΑΝ ΚΑΤΑΠΟΛΕΜΗΣΗ

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

Ήφαιστος

Το σύστημα σχήματος. Από όσο γνωρίζω, κανένα πλαίσιο δεν είναι σε θέση να δημιουργήσει τη δομή της βάσης δεδομένων, τα σημεία εισόδου του διακομιστή, το επίπεδο επικοινωνίας πελάτη / διακομιστή και μια διεπαφή έτοιμη για παραγωγή (φόρμες, λίστες κ.λπ.) από ένα μεμονωμένο σχήμα JSON.

Το Vulcan.js μπορεί να το κάνει αυτό χρησιμοποιώντας τις τελευταίες τεχνολογίες JS.

ΑΥΤΟ

Δεν κατάφερα να διαλέξω μόνο ένα, οπότε τα αγαπημένα μου χαρακτηριστικά του AUSK θα ήταν TypeScript και React Native.

Υπήρξαν συζητήσεις εδώ και μερικά χρόνια σχετικά με τα οφέλη του στατικά δακτυλογραφημένου JavaScript, είτε προτιμάται το Flow είτε το TypeScript… Και το TypeScript κέρδισε σίγουρα τον αγώνα. Η εργασία με TypeScript είναι δυνατή στο Vulcan αλλά, λόγω της χρήσης του Meteor, αυτή τη στιγμή αισθάνεται αφύσικη και η συλλογή είναι αργή. Το AUSK χρησιμοποιεί το TypeScript ως προεπιλογή και είναι καταπληκτικό.

Και React Native… καλά, υπάρχουν επίσηςσυζητά αν η χρήση του React για τη σύνταξη εφαρμογών για κινητά είναι σχετική. Μπορείτε να επιλέξετε να παραμείνετε σε μια αποκριτική εφαρμογή ιστού, αλλά τουλάχιστον γνωρίζετε ότι όλα έχουν ρυθμιστεί για εσάς, δεδομένου ότι η διαμόρφωση ενός dev env για το React Native δεν είναι πάντα εύκολη υπόθεση.

Λοιπόν, έχετε κάνει την επιλογή σας;

Υπάρχουν τόσα πολλά σημεία που πρέπει να ληφθούν υπόψη όπως η απόδοση, η ασφάλεια, το DevOps, η διαχείριση εξουσιοδότησης… Η επιλογή του σωστού εργαλείου για τη δημιουργία της εφαρμογής JavaScript δεν είναι σίγουρα εύκολη επιλογή. Ελπίζω ότι αυτό το άρθρο σας έδωσε πολύτιμες πληροφορίες για να σας βοηθήσει σε αυτήν την απόφαση.

Εάν εξακολουθείτε να αισθάνεστε διστακτικοί, επικοινωνήστε μαζί μου στο Vulcan's Slack, θα χαρώ να τους απαντήσω :)

Μπορείτε επίσης να στείλετε οποιαδήποτε ερώτηση σχετικά με το AUSK στον Victor Vlasenko και την ομάδα του στο SysGears και να συμμετάσχετε στο ειδικό Slack της Vulcan για πρόσβαση στην κοινότητα των Vulcan.

Η τελευταία μου συμβουλή θα είναι τόσο απλή: δώστε στον Vulcan και στον AUSK έναν πυροβολισμό, αξίζουν τον χρόνο σας!

Ευχαριστούμε τους Sacha Greif και Victor Vlasenko για την αξιολόγηση αυτού του άρθρου.

Twitter μπάνιου LBKE

Είμαι ο συνιδρυτής της γαλλικής εταιρείας Lebrun Burel Knowledge Engineering (LBKE) - //www.lbke.fr

Πάντα χαρούμενος να μιλάμε για κώδικα, μηχανική μάθηση, καινοτομία και επιχειρηματικότητα!