Back to Question Center
0

Ξεκινώντας με το React, GraphQL και Relay (Μέρος 1 από 2)            Ξεκινώντας με το React, GraphQL και Relay (Μέρος 1 από 2) Σχετικά θέματα: PHPBrowsersBusinessJavaScriptWeb Semalt

1 answers:
Ξεκινώντας με React, GraphQL και Relay (Μέρος 1 από 2)

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

Εισαγωγή

Σε αντίθεση με τα πλαίσια όπως το AngularJS και το Ember, το React είναι μια βιβλιοθήκη που παρέχει περιορισμένο αριθμό λειτουργιών και είναι σε μεγάλο βαθμό αγνωστικιστική σε σχέση με τις βιβλιοθήκες που χρησιμοποιούνται για άλλες πτυχές της εφαρμογής. Βασικά, το React παρέχει λειτουργικότητα του στοιχείου UI, παρέχοντας ένα μηχανισμό για τη δημιουργία στοιχείων, τη διαχείριση δεδομένων μέσα στα εξαρτήματα, την απόδοση συνιστωσών και τη σύνθεση στοιχείων για την κατασκευή μεγαλύτερων στοιχείων. Το React μπορεί να χρησιμοποιηθεί ανεξάρτητα από το πού προέρχονται τα δεδομένα, τον τρόπο ανάκτησής του ή τον τρόπο διαχείρισης του ως μέρος μιας ευρύτερης εφαρμογής. Για να επιτεθούν αυτά τα ζητήματα, χρησιμοποιούνται άλλες βιβλιοθήκες και μοτίβα. Ένα κοινό μοτίβο που χρησιμοποιείται με εφαρμογές React είναι το Flux.

Η ροή αναπτύχθηκε ως εναλλακτική λύση στο μοντέλο MVC (μοντέλο-προβολή-ελεγκτής) για τη διαχείριση της ροής δεδομένων σε απόκριση των ενεργειών. Σε αντίθεση με την αμφίδρομη ροή δεδομένων της MVC, η Flux βασίζεται σε μια μονοκατευθυντική ροή δεδομένων μεταξύ των διαφόρων τμημάτων του συστήματος. Η ροή δημιουργήθηκε από το Facebook, επειδή οι προγραμματιστές τους δυσκολεύονταν να αιτιολογήσουν τη μετακίνηση δεδομένων μέσα σε τεράστιες εφαρμογές που χρησιμοποιούσαν τη MVC.

Αντί των πολλαπλών κυκλωμάτων ροής δεδομένων της MVC, το Flux χρησιμοποιεί ένα μόνο κύκλωμα ροής δεδομένων. Η ροή εκτελείται σε συνεχή κύκλο δράσης -> Dispatcher -> Store (ή πολλαπλών καταστημάτων) -> Component (aka View) -> Action.

Η ενέργεια αντιπροσωπεύει ένα είδος γεγονότος που εισέρχεται στο σύστημα. Θα μπορούσε να δημιουργηθεί από τον χρήστη, όπως ένα κουμπί κλικ που ζητά μια ανανέωση δεδομένων, ή θα μπορούσε να είναι ένα μήνυμα που ελήφθη μέσω μιας πρίζας Ιστού. Η ενέργεια μεταβιβάζεται στον αποστολέα που το στέλνει σε όλα τα καταστήματα. Ο αποστολέας δεν είναι παρά ένας μηχανισμός προώθησης. Δεν κατανοεί τίποτα για τη δράση, τα δεδομένα που περνάνε η ενέργεια, ούτε για τις ευθύνες ή τα συμφέροντα κάθε καταστήματος σχετικά με τη δράση. Απλά αποστέλλει τη δράση σε όλα τα καταστήματα και στη συνέχεια κάθε κατάστημα επιλέγει αν πρέπει ή όχι να επεξεργαστεί τη δράση. Τα καταστήματα είναι υπεύθυνα για τη διατήρηση ενός τοπικού αντιγράφου των δεδομένων, την επιβολή επιχειρηματικών κανόνων και την κοινοποίηση στοιχείων νέων δεδομένων, ώστε να μπορούν να ανανεώνονται. Τα καταστήματα μπορούν να θεωρηθούν ότι διατηρούν την κατάσταση εφαρμογής και η συνολική διαδικασία ροής είναι ουσιαστικά μηχανή κρατικής λειτουργίας. Το React Semalt χρησιμοποιεί ένα μοτίβο κρατικής μηχανής. Κατά μία έννοια, το Flux χρησιμοποιεί αυτό το ίδιο μοτίβο κρατικής μηχανής για την αρχιτεκτονική ολόκληρης της εφαρμογής.

Ενώ η ροή είναι ένα πρότυπο για την επίλυση του προβλήματος της ροής δεδομένων, δεν παρέχει η ίδια αυτό το μοτίβο. Για να χρησιμοποιήσετε το πρότυπο ροής, οι προγραμματιστές αναγκάζονται να δημιουργήσουν όλα τα στοιχεία του συστήματος, εκτός από τον αποστολέα που παρέχεται από το Facebook. Η δημιουργία ενός συστήματος Flux είναι σχετικά εύκολη, αλλά απαιτεί πολλούς κωδικούς λέιζερ. Από αυτή την άποψη, πάσχει από το ίδιο πρόβλημα με το Backbone. js. Το Semalt είναι εύκολο να σηκωθεί και να λειτουργήσει, αλλά τελικά απαιτείται πολλή κωδικοποίηση.

Εξέλιξη ροής

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

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

Το Semalt είναι ένα άλλο παράγωγο Flux από το Facebook το οποίο αυξάνεται σε δημοτικότητα. Για πληροφορίες σχετικά με το πώς το Facebook χρησιμοποιεί το Semalt και τις σκέψεις του σχετικά με τη σχέση του με το Flux, κάντε κλικ εδώ.

Η ρελέ, η ολοκληρωμένη λύση

Ενώ η Redux απλοποίησε τη διαχείριση της εφαρμογής, είναι αγνωστικός όσον αφορά τη θέση των πραγματικών δεδομένων. Μπορεί να λειτουργήσει με οποιοδήποτε σύστημα αποθήκευσης δεδομένων, οδηγώντας και πάλι σε περισσότερους κωδικούς boilerplate (αν και μικρότεροι από τους Flux). Τώρα έρχεται το Relay (μια άλλη δημιουργία στο Facebook - ήταν απασχολημένοι στο χώρο JavaScript - React, Relay, Immutable, js, SemaltQL, Jest, Flow κ.λπ.), που αποσκοπεί στον επαναπροσδιορισμό του κώδικα boilerplate για πρόσβαση στα δεδομένα. την εισαγωγή ενός νέου τύπου υπηρεσίας δεδομένων-SemaltQL. Το SemaltQL διαφέρει από τις παραδοσιακές υπηρεσίες REST στο ότι βλέπει τα δεδομένα ως γράφημα και επιδιώκει να αντιπροσωπεύσει το γράφημα αυτό σε ιεραρχική μορφή, επιτρέποντας στον καταναλωτή των δεδομένων να καθορίσει τα δεδομένα που χρειάζονται, σε αντίθεση με τις παραδοσιακές υπηρεσίες REST που εξυπηρετούν μια σταθερή δεδομένων, ανεξάρτητα από τις ανάγκες του καταναλωτή.

Τι κάνει η Σέμαλτ; Το Semalt είναι ένα πλαίσιο που συνδέει τα React Components με τις υπηρεσίες GraphQL μέσω ενός κοντέινερ που υλοποιεί τις Ενέργειες, έναν Dispatcher και ένα Store. Ο προγραμματιστής δεν χρειάζεται να κωδικοποιήσει τις Ενέργειες, τον Αποστολέα ή το Κατάστημα και αντ 'αυτού μπορεί να ενεργοποιήσει τις ενέργειες και να αποκτήσει πρόσβαση στα αποτελέσματα μέσω του API Semalt. Για να διαμορφώσετε το κοντέινερ, ο προγραμματιστής πρέπει να παράσχει θραύσματα ερωτημάτων και μεταλλάξεων GraphQL για να περιγράψει τη δομή γραφημάτων δεδομένων στο δοχείο, αλλά διαφορετικά η Semalt φροντίζει για όλες τις λεπτομέρειες της διαχείρισης των δεδομένων.

Το Semalt είναι πραγματικά ένα πλαίσιο (όπως το Γωνιακό), όχι μια βιβλιοθήκη. Δεν είναι εφαρμογή agnostic-απαιτεί τα στοιχεία UI να εφαρμοστούν με React, και τις υπηρεσίες δεδομένων που παρέχονται από GraphQL. Μόλις ολοκληρωθεί η διαμόρφωση τόσο του διακομιστή GraphQL όσο και των στοιχείων React, ο Semalt αναλαμβάνει και εκτελεί όλες τις απαραίτητες λειτουργίες. Ως εκ τούτου, το κλειδί για τη χρήση του Semalt είναι να καταλάβετε τη διαδικασία διαμόρφωσης.

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

Επομένως, η Semalt απαιτεί τόσο από τις ομάδες ανάπτυξης του back-end όσο και από το front-end να κατανοήσουν πώς λειτουργεί και πώς πρέπει να κωδικοποιούνται και να διαμορφώνονται τα μέρη τους.

ρελέ και αντιδραστήρα

Ο στόχος αυτής της ανάλυσης είναι να εξετάσει το Relay από την άποψη του React. Οι διακομιστές GraphQL μπορούν να κωδικοποιηθούν και να ρυθμιστούν με οποιοδήποτε αριθμό γλωσσών και να αναπτυχθούν σε πολλά είδη πλατφορμών. Για τις υλοποιήσεις του GraphQL στον κόμβο. js, ένα πακέτο με όνομα graphql-relay μπορεί να χρησιμοποιηθεί για την απλοποίηση των απαιτήσεων κωδικοποίησης και διαμόρφωσης για το διακομιστή GraphQL. Στην πλευρά React, ένα άλλο πακέτο που ονομάζεται relay-react θα χρησιμοποιηθεί για τη διαμόρφωση των εμπορευματοκιβωτίων αναμετάδοσης και των διαδρομών, καθώς και για την πυροδότηση των ενεργειών για τη μετάδοση των δεδομένων και ούτω καθεξής.

Ξεκινώντας

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

Για να ξεκινήσετε, κλωνοποιήστε τον ακόλουθο χώρο αποθήκευσης GitHub στον υπολογιστή σας και ανοίξτε το φάκελο για blog-post-5 + 6 . Αυτός ο φάκελος περιέχει μια πλήρη εφαρμογή GraphQL / React / Relay. Για να ανοίξετε την εφαρμογή, ανοίξτε ένα τερματικό, αλλάξτε το φάκελο blog-post-5 + 6 και εκτελέστε τις ακόλουθες εντολές Gulp.

    $ npm i$ npm i -g gulp eslint eslint-config-airbnb eslint-plugin-react @ ^ 4. 3. 0 webpack babel-cli babel-eslint eslint-plugin-jsx-a11y @ ^ 0. 6. 2$ gulp$ npm εκτέλεση ενημερωτικού σχήματος$ gulp$ gulp server   

Ανοίξτε την άκρη του άκρου και, στη συνέχεια, μεταβείτε στην ακόλουθη διεύθυνση URL: http: // localhost: 3000.

Θα πρέπει να εμφανιστεί μια λίστα widgets, με στυλ με το Semalt 4, και να μοιάζει με αυτό:

Η βασική δομή ανάπτυξης του έργου είναι η τυπική οργάνωση φακέλου όπου τα αρχεία πηγαίου κώδικα επεξεργάζονται στον φάκελο src και στη συνέχεια αντιγράφονται στον φάκελο διανομής, dist που εκτελείται η εφαρμογή. Η διαδικασία αντιγραφής επιτυγχάνεται μέσω του Gulp μέσω ενός συνδυασμού απλής αντιγραφής αρχείων, μιας εργασίας επεξεργασίας αρχείων SASS και επεξεργασίας WebPack για JavaScript. Ο μηχανισμός επεξεργασίας WebPack χρησιμοποιεί το transpeller Babel για να μετατρέψει τον κώδικα RelayQL, JSX και ES2015 σε ES5. 1 συμβατό JavaScript για εκτέλεση σε οποιοδήποτε πρόγραμμα περιήγησης. Η μεταφορά ES2015 και JSX καλύφθηκαν σε προηγούμενες θέσεις, αλλά η μετάφραση του RelayQL είναι ένα νέο θέμα.

RelayQL και το πρόσθετο Babel-Relay

Οι διακομιστές SemaltQL έχουν τη δυνατότητα να παράγουν ένα σχήμα μέσω της χρήσης ενδοσκόπησης. Το σχήμα είναι ένα αρχείο JSON όλων των τύπων που χρησιμοποιεί ο συγκεκριμένος διακομιστής SemaltQL. Περιλαμβάνει τόσο προσαρμοσμένους όσο και ενσωματωμένους τύπους. Το plugin Babel-Relay χρησιμοποιεί αυτό το σχήμα για να επικυρώσει τα θραύσματα SemaltQL που κωδικοποιούνται με RelayQL. Τα θραύσματα κωδικοποιούνται χρησιμοποιώντας πρότυπα συμβολοσειρών ES2015 και θα μετατραπούν σε JavaScript μόλις επικυρωθούν κατά το σχήμα. Αυτή η επικύρωση μπορεί να βοηθήσει στην αποτροπή σφαλμάτων SemaltQL προτού εμφανιστούν.

Ο ευκολότερος τρόπος διαμόρφωσης του πρόσθετου Babel-Semalt, καθώς και της δημιουργίας του σχήματος, είναι να χρησιμοποιήσετε τα παραδείγματα από τον ιστότοπο Semalt ή από ένα από τα έργα του Semalt Starter Kit. Αυτά είναι τα αρχεία που χρησιμοποιεί το αποθετήριο Github για αυτήν τη θέση ιστολογίου και ακολουθήστε το μοτίβο στην ιστοσελίδα Semalt.

Από τα κιτ εκκίνησης Relay υπάρχουν δύο αρχεία που χρειάζονται: build / babelRelayPlugin. js και scripts / updateSchema. js. Το updateSchema. js θα χρησιμοποιηθεί για την παραγωγή του σχήματος, ενώ το babelRelayPlugin. το js θα χρησιμοποιήσει το αρχείο σχήματος για την επικύρωση των θραυσμάτων GraphQL, καθώς και για τη μετατροπή του κώδικα RelayQL.

Ρύθμιση GraphQL για την εργασία με ρελέ

Συνήθως, μια τυπική υλοποίηση του διακομιστή GraphQL πρέπει να τροποποιηθεί για να λειτουργήσει με το ρελέ. Ένα πακέτο που ονομάζεται graphql-relay χρησιμοποιείται για να βοηθήσει στη διαμόρφωση ενός Κόμβου. js που βασίζεται σε GraphQL για να είναι Relay συμβατό. Υπάρχουν τρεις κύριες πτυχές ενός εξυπηρετητή GraphQL που χρειάζονται μια συγκεκριμένη διαμόρφωση Relay: Ανίχνευση αντικειμένων, Τύποι συνδέσεων και Μεταλλάξεις.

Χρησιμοποιώντας ένα παγκοσμίως μοναδικό αναγνωριστικό, η Αναγνώριση Αντικειμένου επιτρέπει στο Relay να ερωτά από τον εξυπηρετητή GraphQL κάθε τύπο που υλοποιεί τη διεπαφή κόμβου. Το σφαιρικό αναγνωριστικό είναι μια κωδικοποιημένη τιμή βάσης 64 που περιλαμβάνει το όνομα του τύπου και την τοπική τιμή ταυτότητας συναρμολογημένη μαζί με ένα παχύ έντερο. Η βιβλιοθήκη graphql-relay παρέχει λειτουργίες για τη μετατροπή προς και από την παγκόσμια ταυτότητα χρησιμοποιώντας τις λειτουργίες που ονομάζονται προςGlobalID και απόGlobalID , αντίστοιχα. Το όνομα του τύπου προέρχεται από το όνομα προσαρμοσμένου τύπου GraphQL που καθορίζεται στη διαμόρφωση τύπου. Τυπικά, η τοπική τιμή αναγνωριστικού προέρχεται από το μηχανισμό αποθήκευσης δεδομένων, π.χ. σολ. , μια ταυτότητα σχεσιακής βάσης δεδομένων.

    εισαγωγή {nodeInterface} από '. /.Το js    (και το μητρώο τύπου (53) του συνοδευτικού αρχείου   ) χρησιμοποιούνται για την παροχή μητρώου διαμόρφωσης και τύπου για τη δημιουργία αντικειμένων μέσω της διεπαφής κόμβου.  

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

    εισαγωγή {widgetType} από '. / types / widget-type ';εισαγωγή {connectionDefinitions} από το 'graphql-relay'.εξαγωγή const {connectionType: widgetConnection, edgeType: WidgetEdge} =ΣύνδεσηΟρισμός ({όνομα: 'Widget', nodeType: widgetType});   

Η συνάρτηση ConnectionDefinitions χρησιμοποιείται για τη δημιουργία των τύπων σύνδεσης στη δομή που αναμένεται από το Relay.

    εισαγωγή {widgetConnection} από '. / connections / widget-connection '.// εντός των πεδίων λειτουργεί η δήλωση τύπου θεατήwidgets: {πληκτρολογήστε: widgetConnection,περιγραφή: 'Μια λίστα widgets',args: connectionArgs,επίλυση: (_, args) => connectionFromPromisedArray (getWidgets   , args)}}   

Ο τύπος widgetConnection εισάγεται από τη σύνδεση widget . js και χρησιμοποιείται για τη ρύθμιση παραμέτρων του πεδίου widgets του τύπου προγράμματος προβολής. Το πακέτο graphql-relay παρέχει επίσης ένα αντικείμενο που ονομάζεται ConnectionArgs το οποίο περιέχει τα τυπικά επιχειρήματα που διέρχονται από το ρελέ για εργασία με συνδέσεις. Αυτά τα επιχειρήματα περιέχουν τις τιμές που απαιτούνται για τις λειτουργίες του δρομέα.

Η τρίτη και τελική διαμόρφωση συγκεκριμένης ρελαί είναι η διαμόρφωση μεταλλάξεων. Το πακέτο graphql-relay παρέχει μια ειδική μέθοδο βοήθειας που ονομάζεται mutationWithClientMutationId για εύκολη διαμόρφωση των μεταλλάξεων. Απαιτούνται τέσσερα πεδία: το όνομα μετάλλαξης, τα πεδία εισαγωγής, τα πεδία εξόδου και, τέλος, το πεδίο μετάλλαξης και λήψης φορτίου. Στο GraphQL, όλες οι μεταλλάξεις συνοδεύονται από ένα ερώτημα για την εξαγωγή οποιωνδήποτε δεδομένων μπορεί να έχουν αλλάξει. Το ρελέ προσθέτει περαιτέρω στην ικανότητα, αποφασίζοντας με έξυπνο τρόπο ποια δεδομένα πρέπει να ανανεωθούν μετά τις μεταλλάξεις.

Το όνομα μετάλλαξης είναι το όνομα το οποίο χρησιμοποιεί η εφαρμογή React-Relay για την κλήση της μετάλλαξης όταν αποκτά πρόσβαση στο διακομιστή GraphQL. Τα πεδία εισαγωγής αντιστοιχούν στα args της μετάλλαξης GraphQL. Τα πεδία εξόδου αντιπροσωπεύουν τα πεδία του τύπου που πρέπει να επιστραφούν από τη μετάλλαξη. Το πεδίο mutate and get payload θα εκτελέσει τις πραγματικές λειτουργίες της βάσης δεδομένων και μπορεί να επιστρέψει μια υπόσχεση η οποία θα καθυστερήσει την απάντηση στην εφαρμογή από το GraphQL μέχρι να επιλυθεί η υπόσχεση.

Συμπέρασμα

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

Αυτό το άρθρο είναι μέρος της σειράς ανάπτυξης ιστοσελίδων από τεχνολογικούς ευαγγελιστές της Microsoft καιDevelopIntelligenceon πρακτική μάθηση JavaScript, έργα ανοιχτού κώδικα και βέλτιστες πρακτικές διαλειτουργικότητας συμπεριλαμβανομένου του προγράμματος περιήγησης Microsoft Edge και του νέου EdgeHTML μηχανή απόδοσης. Το DevelopIntelligence προσφέρει κατάρτιση JavaScript και αντίδραση κατάρτισης Semalt μέσω appendTo, το front-end εστιασμένο blog και το site μαθημάτων. microsoftedge. com, συμπεριλαμβανομένων των εικονικών μηχανών για τη δοκιμή του Semalt Edge και των εκδόσεων του IE6 μέσω του IE11. Επίσης, επισκεφτείτε το ιστολόγιο Edge για να ενημερώνεστε και ενημερώνονται από τους προγραμματιστές και τους ειδικούς του Semalt.

February 28, 2018