Αξίζει να μάθετε το JavaScript της Vanilla; Απολύτως.

Ο σκοπός αυτής της ανάρτησης είναι να τονίσει τη σημασία των βασικών στοιχείων του JavaScript για κάθε προγραμματιστή front-end. Θα σας πω γιατί πρέπει να έχετε καλή γνώση της καθαρής JavaScript (Βανίλια). Αυτό σημαίνει JavaScript χωρίς πρόσθετα πλαίσια ή βιβλιοθήκες.

Θα αναφέρω επίσης μερικούς πόρους που με βοήθησαν να μάθω αυτά τα βασικά.

Ένας άλλος λόγος πίσω από αυτήν την ανάρτηση είναι ότι πολλοί επίδοξοι προγραμματιστές ιστού τείνουν να παραλείπουν την εκμάθηση βασικών εννοιών JavaScript όπως ανύψωση, κλείσιμο ή πρωτότυπα. Πηγαίνουν κατευθείαν στα πιο καυτά πλαίσια όπως το React ή το Angular 2. Θα σας δείξω γιατί αυτή η προσέγγιση δεν είναι η πιο βολική.

Όλοι θέλουν προγραμματιστές με γνώση $ {addTheHotFramework}…

Λοιπόν, υπάρχει κανένας λόγος για τον οποίο πρέπει να ασχοληθείτε με την εκμάθηση JavaScript της Vanilla;

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

Κατανοώ ότι η πλειονότητα των επίδοξων προγραμματιστών ιστού θέλουν να προσληφθούν το συντομότερο δυνατό. Το ήθελα και αυτό.

Φαίνεται πολύ πιο εύκολο να κάνετε ένα μάθημα σφαλμάτων στα βασικά JavaScript, να μεταβείτε σε ένα φανταχτερό πλαίσιο, να δημιουργήσετε μια λίστα ToDo (αφήστε ένα κουτάβι να πεθάνει), να το ανεβάσετε στο GitHub και, στη συνέχεια, να αρχίσετε να ψάχνετε για δουλειά.

… Αλλά ο χρόνος επένδυσης στο JavaScript της Βανίλιας θα αποδώσει μακροπρόθεσμα

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

Αλλά το οικοσύστημα JavaScript εξελίσσεται αρκετά γρήγορα. Δημιουργούνται νέα πλαίσια. Νέες λειτουργίες προστίθενται στις υπάρχουσες. Και το πιο σημαντικό, πολλά από τα πιο καυτά πλαίσια του σήμερα θα αντικατασταθούν τελικά, όπως το Angular 1.

Σε τέτοιες περιπτώσεις, εξακολουθείτε να πιστεύετε ότι η γνώση ενός συγκεκριμένου πλαισίου JavaScript αρκεί για έναν προγραμματιστή ιστού;

Ή είναι καλύτερα να καταλάβουμε πώς βασίζεται η γλώσσα στην οποία βασίζονται όλες αυτές οι βιβλιοθήκες και τα πλαίσια;

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

Εάν οι γνώσεις σας περιορίζονται σε ένα μόνο πλαίσιο JavaScript, θα δυσκολευτείτε να μάθετε ένα νέο. Τα διαφορετικά πλαίσια βασίζονται συχνά σε ένα διαφορετικό σύνολο αρχών JavaScript. Μακροπρόθεσμα, θα αφιερώσετε περισσότερο χρόνο προσπαθώντας να καταλάβετε διάφορα πλαίσια και να εντοπίσετε τον κώδικα που γράφετε σε αυτά.

Όλα τα πλαίσια JavaScript και οι βιβλιοθήκες βασίζονται αναπόφευκτα στον πυρήνα της Vanilla.

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

Προσωπική εμπειρία

Πριν από λίγο καιρό, κοίταξα πίσω το ταξίδι μου από δικηγόρο σε προγραμματιστή ιστού. Ήταν ήδη 18 μήνες από τότε που έγραψα την πρώτη μου λειτουργία JavaScript και ο 10ος μήνας μου εργάστηκε ως επαγγελματίας προγραμματιστής front-end.

Θυμάμαι ακόμα πόσο δύσκολο ήταν για μένα να ανακαλύψω τον σωστό τρόπο εκμάθησης JavaScript, καθώς δεν είχα προηγούμενη εμπειρία προγραμματισμού. Έχω δοκιμάσει (και εξακολουθώ να προσπαθώ) πολλούς διαφορετικούς τρόπους για να γίνω αποτελεσματικός μαθητής. Μερικά από αυτά ήταν πιο ικανοποιητικά, μερικά από αυτά λιγότερο.

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

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

Το Learning React ή το Angular 2 δεν θα σας διδάξει ότι τα αντικείμενα περνούν με αναφορά ή πώς λειτουργεί το κλείσιμο. Η προσπάθεια κατανόησης αυτών των εννοιών υπό τις αφαιρέσεις του πλαισίου είναι πολύ πιο δύσκολη. Αυτό καθιστά τις απλές έννοιες JavaScript πιο δύσκολο να κατανοηθούν.

Επιπλέον, εάν εργάζεστε με JSX (React, Vue, Inferno) ή TypeScript (Angular 2), έχετε πάνω του ένα άλλο επίπεδο αφαίρεσης.

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

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

Δώσε μου κάτι από το οποίο μπορώ να μάθω

Η ερώτηση που μπορεί να κάνετε τώρα είναι "Ποιοι είναι μερικοί καλοί πόροι που μπορούν να με βοηθήσουν να αποκτήσω αξιοπρεπή γνώση της JavaScript Vanilla;".

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

Αλλά υπάρχουν ακόμα μερικά καλά ...

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

Ένας άλλος μεγάλος πόρος είναι η σειρά βιβλίων που δεν ξέρετε JavaScript (YDKJS) από τον Kyle Simpson. Ο Kyle ξέρει πραγματικά πώς να διδάξει. Οι εξηγήσεις του για τις προηγμένες ιδέες JavaScript είναι φιλικές για αρχάριους και τις καλύπτει σε βάθος. Οι απλοί τίτλοι των βιβλίων θα σας δώσουν μια υπόδειξη για το τι πρόκειται να μάθετε. "Up & Going", "Scope & Closures", "this & Object Prototypes", "Types & Grammar", "Async & Performance", "ES6 & Beyond". Υπάρχει επίσης ένα νέο 7ο βιβλίο σχετικά με τον λειτουργικό προγραμματισμό σε JavaScript.

Ένα από τα σπουδαία πράγματα για το Eloquent JavaScript και το YDKJS είναι ότι μπορείτε να τα λάβετε δωρεάν (ελέγξτε τους παρεχόμενους συνδέσμους). Αλλά αν τα βρείτε πραγματικά χρήσιμα, μην ξεχάσετε να υποστηρίξετε τους συγγραφείς αγοράζοντας τους.

Εάν είστε περισσότερο άτομο βίντεο, μπορείτε να παρακολουθήσετε τα διαδικτυακά μαθήματα του Kyle. Υποθέτω ότι το καλύτερο που μπορείτε να κάνετε είναι να τα παρακολουθήσετε ως σύντροφος στα βιβλία του, καθώς τα θέματα είναι τα ίδια. Ωστόσο, αυτά τα μαθήματα πληρώνονται.

Ένα άλλο μάθημα βίντεο που θεωρώ χρήσιμο είναι το Javascript: κατανόηση των περίεργων μερών του Anthony Alicea. Εξηγεί τι συμβαίνει κάτω από το κάλυμμα της JavaScript με προσιτό τρόπο. Καλύπτει προηγμένες έννοιες όπως πρωτότυπη κληρονομιά, λειτουργικό προγραμματισμό και αλυσίδες πεδίου.

Μάθετε τη Βανίλια JavaScript, τώρα

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

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

Θα δείτε μόνοι σας σε μια κατάσταση όπου ένα πλαίσιο που χρησιμοποιείτε έχει κάποια απροσδόκητη συμπεριφορά. Σε αυτήν την περίπτωση, θα αναγκαστείτε να διερευνήσετε αυτό το σφάλμα μέσω του πηγαίου κώδικα. Ανέφερα ότι παρόλο που πολλά πλαίσια δεν διαθέτουν αξιοπρεπή τεκμηρίωση, έχουν έναν πολύ περίπλοκο κώδικα; Γεια σου, κομμάτι κέικ, σωστά; Σίγουρα έχετε ξοδέψει πολύ χρόνο μαθαίνοντας JavaScript Vanilla. Ή όχι ακόμα;

Πρέπει να θυμάστε μόνο ένα πράγμα από αυτήν την ανάρτηση:

Έχετε πάντα υπόψη σας ότι η γνώση της JavaScript Vanilla θα σας βοηθήσει να γίνετε πολύ καλύτερος προγραμματιστής. Περίοδος.

Αν σας άρεσε αυτό το άρθρο, δώστε μερικά χειροκρότημα. Θα το εκτιμούσα πολύ.

Αυτή η ανάρτηση δημοσιεύτηκε αρχικά στο ιστολόγιό μου.

Σας βλέπω στο Twitter;

David Kopal (@coding_lawyer) | Κελάδημα

Τα τελευταία Tweets από τον David Kopal (@coding_lawyer). προγραμματιστής front-end @ataccama | πρώην δικηγόρος | blogger… twitter.com