Χόβολη. Το καλύτερο σας στοίχημα.

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

Οι βιβλιοθήκες δεν αποτελούν πλαίσια.

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

Το Ember είναι μια καλά επιμελημένη εργαλειοθήκη

Το πρόβλημα που βλέπω είναι ότι η κοινότητα των συνόρων συνολικά έχει συγχέει τα δύο αρκετά. Για παράδειγμα, τα Glimmer.js, Vue.js και React.js είναι εργαλεία προβολής στρώσεων - σας βοηθούν να διαχειριστείτε τα στοιχεία rendering σε μια σελίδα. Ωστόσο, υπάρχουν εργαλεία που αντιμετωπίζουν άλλα θέματα, όπως το React-Router και το router.js για υποστήριξη δρομολόγησης, καθώς επίσης και το create-react-app και το ember-cli για εργαλεία.

Τα πλαίσια περιλαμβάνουν αυτά τα εργαλεία, ώστε να μπορείτε να ξεκινήσετε να χτίζετε την εφαρμογή σας. Το πρώτο πλαίσιο μου ήταν το Rails, ένα εξαιρετικό παράδειγμα ενός πλαισίου που αποτελείται από μερικές εξαιρετικές βιβλιοθήκες. Το πρόβλημα είναι ότι ένα backend πλαίσιο δεν μεταφράζεται διανοητικά στο frontend, γιατί μετά από όλα τα frontend είναι ακριβώς το UI - σωστά;

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

Παροχή Λογισμικού.

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

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

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

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

Οφέλη για την επιλογή του Ember.

Μια απλούστερη ζωή.

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

Η δοκιμή στο Ember είναι ένα τέλειο παράδειγμα για το πώς η ζωή έχει γίνει ευκολότερη. Η μονάδα, η ολοκλήρωση και η πλήρης δοκιμή αποδοχής αποτελούν μέρος του πλαισίου. Πρέπει μόνο να επιλέξετε ποιο δοκιμαστή (π.χ. qunit [2], mocha, κλπ ...) θέλετε να χρησιμοποιήσετε. Όλα τα άλλα έρχονται μαζί και μπορείτε να αρχίσετε γρήγορα να γράφετε και να εκτελείτε τις δοκιμές σας.

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

Μια φιλική κοινότητα.

Η κοινότητα είναι ίσως μια από τις καλύτερες πτυχές για την επιλογή του Ember. Επειδή οι συνομιλίες είναι διαφανείς και ανοιχτές στο κοινό, οι λόγοι πίσω από τους οποίους εφαρμόζεται ένα πρότυπο έναντι άλλου ή γιατί μια συγκεκριμένη τεχνική είναι καλύτερη - είναι όλα τεκμηριωμένα στο διαδίκτυο [3]. Είστε έτοιμοι για να κάνετε κριτική, κριτική, αποφυγή ή εφαρμογή.

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

Τεκμηρίωση.

Η βιβλιοθήκη είναι εξαιρετικά καλά τεκμηριωμένη [4]. Από τον πηγαίο κώδικα, τους οδηγούς ή τις συνομιλίες χαλαρών καναλιών - μπορείτε να βρείτε την απάντηση στην ερώτησή σας. Και ακόμα καλύτερα - έχει ληφθεί σοβαρά υπόψη. Η τεκμηρίωση είναι έκδοση, οι συνομιλίες που βασίζονται στην κοινότητα στο Github είναι διεξοδικές και η κεντρική ομάδα έχει εφαρμόσει κατευθυντήριες γραμμές που βοηθούν στην εφαρμογή αυτής της τυποποιημένης διαδικασίας στο εκτεταμένο σύστημα addon του.

Κοινές επικρίσεις του Ember.

Δεν είναι δροσερό.

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

Η προτίμηση στη σταθερότητα μπορεί να μην είναι φανταχτερή αν ξεκινάτε και μπορεί να σας ενοχλεί ότι ο Ember δεν σας αφήνει να σπάσετε τα πράγματα. Το κάναμε αυτό και δεν ήταν τόσο διασκεδαστικό.

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

Η καμπύλη μάθησης είναι απότομη.

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

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

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

Ο ντόπιος δεν είναι κύριος πολίτης.

Το Ember είναι ένα πλαίσιο που δεσμεύεται στην αρχιτεκτονική ενιαίας σελίδας (SPA). Τα οφέλη που αποκομίζετε από το SPA είναι τα οφέλη της Ember. Δεδομένου ότι το SPA δεν είναι μια ιδέα για τις εγγενείς εφαρμογές, το Ember είναι κακή για τους ιθαγενείς.

Λάβετε υπόψη ότι ο Ember προχωράει με τις προοδευτικές εφαρμογές ιστού. Έτσι, αν αυτή είναι μια επιλογή που θα θέλατε να εξετάσετε, ελέγξτε έξω Building a Progressive Web App με Ember από mixonic.

Γιατί πρέπει να επιλέξετε το Ember.

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

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

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

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

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

Ευχαριστώ.

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

Σημειώσεις.

[1] η δημιουργία-αντίδραση-app (CRA) βασίζεται ελαφρώς στην ίδια φιλοσοφία με το ember-cli. Το CRA παρέχει μια αρχική εμπειρία στη δημιουργία μιας εφαρμογής, ωστόσο μόλις οι ανάγκες σας υπερβούν τους στόχους του συγκεκριμένου έργου - είστε μόνοι σας. Από την άλλη πλευρά, το ember-cli παρέχει ένα οικοσύστημα addon που σας δίνει τη δυνατότητα να συνδέσετε το cli για να προσαρμόσετε τις κατασκευές σας.

[2] Το ember-qunit είναι ο προεπιλεγμένος δρομέας δοκιμών, που δεν απαιτεί διαμόρφωση προς τα εμπρός

[3] Παραδείγματα διαφανών συνομιλιών:

  • https://github.com/emberjs/rfcs/pull/176
  • https://github.com/emberjs/rfcs/pull/240

[4] Παραδείγματα τεκμηρίωσης:

  • https://github.com/emberjs/ember.js/blob/v2.15.0/packages/ember-runtime/lib/mixins/observable.js#L96
  • https://github.com/emberjs/ember.js/blob/v2.15.0/packages/ember-routing/lib/system/route.js#L1458