Ας δούμε τι είναι τόσο απίθανο στην JavaScript, τι μπορούμε να φτιάξουμε με αυτήν, και ποιες άλλες τεχνολογίες μπορούμε να χρησιμοποιήσουμε με αυτήν.
Η JavaScript είχε φτιαχτεί για να ζωντανέψει τις ιστοσελίδες
Τα προγράμματα σε αυτήν τη γλώσσα λέγονται scripts. Μπορούν να γραφτούν κατευθείαν στην κονσόλα του browser ή στο HTML μίας ιστοσελίδας και να τρέχονται όταν φορτώνει η ιστοσελίδα.
Τα scripts τρέχονται σαν κανονικό κείμενο, δεν χρειάζεταινα τα κάνουμε compile.
Σε αυτό το σημείο, να συμπληρώσω οτι η JavaScript έχει μεγάλη διάφορα με την Java.
'''smart header="Γιατί JavaScript?" Όταν είχε φτιαχτεί η JavaScript, είχε ένα διαφορετικό όνομά, λεγότανε "LiveScript". Αλά η Java ήταν πολύ γνωστή εκείνη την εποχή, οπότε αποφασίστηκε οτι θα βοηθούσε αν έκαναν την γλωσσά προγραμματισμού τον "μικρο αδελφό" της Java.
Αλλά καθώς εξελίχθηκε, η JavaScript έγινε μια πλήρως ανεξάρτητη γλώσσα με τη δική της προδιαγραφή που ονομάζεται [ECMAScript] (http://en.wikipedia.org/wiki/ECMAScript), και τώρα δεν έχει καμία σχέση με την Java
Σήμερα, Μπορούμε να τρέξουμε την JavaScript και στον server, και σε οποιαδήποτε συσκευή που έχει ένα δικό της πρόγραμμά που λέγετε JavaScript engine.
Το browser έχει ένα ενσωματωμένο JavaScript engine που συνηθως λέγεται "JavaScript virtual machine".
Κάθε engine έχει δικό του "codename". Για παράδειγμά:
- V8 -- στο Chrome και Opera.
- SpiderMonkey -- στο Firefox.
- ...Υπάρχουν και άλλα codenames οπός το "Trident" και "Chakra" για διαφορετικές εκδόσεις του Internet Explorer, "ChakraCore" για το Microsoft Edge, "Nitro" και "SquirrelFish" γα το Safari, κα.
Είναι κάλο να θυμόμαστε τους παρακάτω ορούς γιατί χρησιμοποιούνται σε άρθρα προγραμματιστών στο Internet. Και θα τα χρησιμοποιήσουμε και σε αυτό το tutorial.
'''smart header="How do engines work?"
Τα engines είναι περίπλοκοι. Αλλά τα βασικά είναι εύκολα.
- Το engine (ενσωματωμένος αν είναι πρόγραμμα περιήγησης) διαβάζει ("αναλύει") τα script.
- Στη συνέχεια μετατρέπει ("μεταγλώττιση") το script στη γλώσσα του μηχανήματος.
- Ύστερα ο κώδικας του μηχανήματος τρέχει, αρκετά γρήγορα. Το engine εφαρμόζει βελτιστοποιήσει σε κάθε βήμα της διαδικασίας. Παρακολουθεί ακόμη και το μεταγλωττισμένο script καθώς εκτελείται, αναλύει τα δεδομένα που ρέουν μέσα από αυτό και εφαρμόζει βελτιστοποιήσεις στον κώδικα του μηχανήματος βάσει αυτής της γνώσης. Όταν ολοκληρωθεί, τα script εκτελούνται αρκετά γρήγορα.
Η σύγχρονη JavaScript είναι μια "ασφαλής" γλώσσα προγραμματισμού. Δεν παρέχει low-level πρόσβαση στη μνήμη ή στη CPU, επειδή δημιουργήθηκε αρχικά για προγράμματα περιήγησης που δεν το χρειάζονται.
Οι δυνατότητες της JavaScript εξαρτώνται σε μεγάλο βαθμό από το περιβάλλον στο οποίο εκτελείται. Για παράδειγμα, το [Node.js] (https://wikipedia.org/wiki/Node.js) υποστηρίζει λειτουργίες που επιτρέπουν στην JavaScript να διαβάζει/γράφει αυθαίρετα αρχεία, να εκτελεί αιτήματα δικτύου, και τα λοιπά.
Η JavaScript στο πρόγραμμα περιήγησης μπορεί να κάνει ό, τι σχετίζεται με τη διαχείριση ιστοσελίδων, την αλληλεπίδραση με τον χρήστη και τον διακομιστή ιστού.
Για παράδειγμα, η JavaScript στο πρόγραμμα περιήγησης είναι σε θέση να:
- Να προσθέση νέο HTML στη σελίδα, να αλλάξει το υπάρχον περιεχόμενο, να τροποποιήση τα στυλ.
- Αντιδράει στις ενέργειες των χρηστών, εκτελεί κλικ του ποντίκιου, κινήσεις δείκτη, πατήματα πλήκτρων.
- Αποστολή αιτημάτων μέσω δικτύου σε απομακρυσμένους διακομιστές, λήψη και αποστολή αρχείων (το λεγόμενο [AJAX] (https://en.wikipedia.org/wiki/Ajax_ (προγραμματισμός)) και [COMET] (https: // en. wikipedia.org/wiki/Comet_(προγραμματισμός)) τεχνολογίες).
- Λαμβάνει και να στέλνει cookies, να κάνει ερωτήσεις στον επισκέπτη, να δέχεται μηνύματα.
- Να θυμάστε τα δεδομένα από την πλευρά του πελάτη ("local storage").
Οι δυνατότητες τις JavaScript στο πρόγραμμα περιήγησης είναι περιορισμένες για λόγους ασφάλειας του χρήστη. Ο στόχος είναι να αποτραπεί η πρόσβαση μιας κακόβουλης ιστοσελίδας σε ιδιωτικές πληροφορίες ή να βλάψει τα δεδομένα του χρήστη.
Παραδείγματα τέτοιων περιορισμών περιλαμβάνουν:
- Η JavaScript σε μια ιστοσελίδα ενδέχεται να μην διαβάζει / γράφει αυθαίρετα αρχεία στον σκληρό δίσκο, να τα αντιγράφει ή να εκτελεί προγράμματα. Δεν έχει άμεση πρόσβαση στις λειτουργίες του λειτουργικού συστήματος.
Τα σύγχρονα προγράμματα περιήγησης την επιτρέπουν να λειτουργεί με αρχεία, αλλά η πρόσβαση είναι περιορισμένη και παρέχεται μόνο εάν ο χρήστης κάνει συγκεκριμένες ενέργειες, όπως "dropping" ενός αρχείου σε ένα παράθυρο του προγράμματος περιήγησης ή επιλογή του μέσω του '' ετικέτας.
Υπάρχουν τρόποι αλληλεπίδρασης με κάμερα / μικρόφωνο και άλλες συσκευές, αλλά απαιτούν τη ρητή άδεια του χρήστη. Επομένως, μια σελίδα με δυνατότητα JavaScript ενδέχεται να μην ενεργοποιεί κρυφά μια κάμερα web, να παρατηρεί το περιβάλλον και να στέλνει τις πληροφορίες στο [NSA] (https://en.wikipedia.org/wiki/National_Security_Agency)
- Διαφορετικές tabs/windows γενικά δεν αναγνωρίζουν ο ένας τον άλλον. Μερικές φορές το κάνουν, για παράδειγμα όταν ένα παράθυρο χρησιμοποιεί JavaScript για να ανοίξει το άλλο. Αλλά ακόμη και σε αυτήν την περίπτωση, η JavaScript από μία σελίδα ενδέχεται να μην έχει πρόσβαση στην άλλη, εάν προέρχεται από διαφορετικούς ιστότοπους (από διαφορετικό τομέα, πρωτόκολλο ή θύρα).
<<<<<<< HEAD Αυτό ονομάζεται "Same Origin Policy". Για να επιλυθεί αυτό, οι δυο σελιδες πρέπει να συμφωνήσουν για την ανταλλαγή δεδομένων και να περιέχουν έναν ειδικό κώδικα JavaScript που το χειρίζεται. Θα το καλύψουμε έπειτα στο σεμινάριο.
Αυτός ο περιορισμός υπάρχει για την ασφάλεια του χρήστη. Μια σελίδα από το 'http://anysite.com' που έχει ανοίξει ένας χρήστης δεν πρέπει να έχει πρόσβαση σε άλλη καρτέλα του προγράμματος περιήγησης με τη διεύθυνση URL 'http://gmail.com' και να κλέβει πληροφορίες από εκεί.
- Η JavaScript μπορεί εύκολα να επικοινωνήσει μέσω του δικτύου στον διακομιστή από τον οποίο προήλθε η τρέχουσα σελίδα. Όμως, η ικανότητά της να λαμβάνει δεδομένα από άλλους ιστότοπους / τομείς είναι αδύνατη. Αν και είναι δυνατό, απαιτεί ρητή συμφωνία (που εκφράζεται σε κεφαλίδες HTTP) από την απομακρυσμένη πλευρά. Και πάλι, αυτός είναι ένας περιορισμός ασφάλειας.
=======
This limitation is, again, for the user's safety. A page from
http://anysite.comwhich a user has opened must not be able to access another browser tab with the URLhttp://gmail.com, for example, and steal information from there. - JavaScript can easily communicate over the net to the server where the current page came from. But its ability to receive data from other sites/domains is severely limited. Though possible, it requires explicit agreement (expressed in HTTP headers) from the remote side. Once again, that's a safety limitation.
52c1e61915bc8970a950a3f59bd845827e49b4bf
Τέτοια όρια δεν υπάρχουν εάν η JavaScript χρησιμοποιείται εκτός του προγράμματος περιήγησης, για παράδειγμα σε διακομιστή. Τα σύγχρονα προγράμματα περιήγησης επιτρέπουν επίσης plugin/extensions που ενδέχεται να ζητούν εκτεταμένα δικαιώματα.
Υπάρχουν τουλάχιστον τρία υπέροχα πράγματα για την JavaScript:
- Πλήρης ενσωμάτωση με HTML/CSS.
- Απλά πράγματα είναι απλά.
- Υποστήριξη από όλα τα μεγάλα προγράμματα περιήγησης και ενεργοποιείται από προεπιλογή. ''' Η JavaScript είναι η μόνη τεχνολογία προγράμματος περιήγησης που συνδυάζει αυτά τα τρία πράγματα.
Αυτό κάνει την JavaScript μοναδική. Γι 'αυτό είναι το πιο διαδεδομένο εργαλείο για τη δημιουργία διεπαφών προγράμματος περιήγησης.
Ενώ σχεδιάζετε να μάθετε μια νέα τεχνολογία, είναι ωφέλιμο να ελέγξετε τις προοπτικές της. Ας προχωρήσουμε λοιπόν στις σύγχρονες τάσεις που το επηρεάζουν, συμπεριλαμβανομένων των νέων γλωσσών και των δυνατοτήτων του προγράμματος περιήγησης.
Η σύνταξη της JavaScript δεν ταιριάζει στις ανάγκες όλων. Διαφορετικοί άνθρωποι θέλουν διαφορετικά χαρακτηριστικά.
Αυτό είναι αναμενόμενο, επειδή τα έργα και οι απαιτήσεις είναι διαφορετικά για όλους.
Έτσι πρόσφατα εμφανίστηκε μια πληθώρα νέων γλωσσών, οι οποίες μεταφράστηκαν (μετατράπηκαν) σε JavaScript πριν εκτελεστούν στο πρόγραμμα περιήγησης.
Τα σύγχρονα εργαλεία καθιστούν τη μετάδοση πολύ γρήγορα και διαφανα, επιτρέποντας στην πραγματικότητα στους προγραμματιστές να κωδικοποιούν σε άλλη γλώσσα και να το μετατρέπουν αυτόματα σε "under the hood".
Παραδείγματα τέτοιων γλωσσών:
- CoffeeScript είναι "syntactic sugar" για την JavaScript. Εισάγει συντομότερη σύνταξη, επιτρέποντάς μας να γράψουμε σαφέστερο και ακριβέστερο κώδικα. Συνήθως, στούς Ruby devs αρέσει.
- TypeScript επικεντρώνεται στην προσθήκη "αυστηρής πληκτρολόγησης δεδομένων" για απλοποίηση της ανάπτυξης και υποστήριξης σύνθετων συστημάτων. Αναπτύσσεται από τη Microsoft.
- Flow προσθέτει επίσης πληκτρολόγηση δεδομένων, αλλά με διαφορετικό τρόπο. Αναπτύχθηκε από το Facebook.
- Dart είναι μια αυτόνομη γλώσσα που έχει τη δική της μηχανή που λειτουργεί σε περιβάλλοντα εκτός προγράμματος περιήγησης (όπως εφαρμογές για κινητά), αλλά μπορεί επίσης να μεταφερθεί σε JavaScript. Αναπτύχθηκε από την Google.
Υπάρχουν περισσότερα. Φυσικά, ακόμη και αν χρησιμοποιούμε μία από τις μεταγλωττισμένες γλώσσες, πρέπει επίσης να γνωρίζουμε τη JavaScript για να κατανοήσουμε πραγματικά τι κάνουμε.
- Η JavaScript δημιουργήθηκε αρχικά ως γλώσσα μόνο για πρόγραμμα περιήγησης, αλλά τώρα χρησιμοποιείται και σε πολλά άλλα περιβάλλοντα.
- Σήμερα, η JavaScript έχει μια μοναδική θέση ως η πιο ευρέως υιοθετημένη γλώσσα προγράμματος περιήγησης με πλήρη ενσωμάτωση σε HTML / CSS.
- Υπάρχουν πολλές γλώσσες που "μεταδίδονται" στην JavaScript και παρέχουν ορισμένες λειτουργίες. Συνιστάται να τα ρίξετε μια ματιά, τουλάχιστον εν συντομία, εφόσον γίνεται ατσίδες στην JavaScript.