Maison  >  Article  >  développement back-end  >  Comment Golang et JS interagissent-ils ?

Comment Golang et JS interagissent-ils ?

Guanhui
Guanhuioriginal
2020-06-13 10:39:594680parcourir

Comment Golang et JS interagissent-ils ?

Comment Golang et JS interagissent-ils ?

1. Utilisez la technologie AJAX, qui peut mettre à jour une partie de la page Web sans recharger la page Web entière

  • Utiliser Ajax Le plus grand avantage est qu'il peut conserver les données sans mettre à jour la page entière. Cela permet aux applications Web de répondre plus rapidement aux actions des utilisateurs et d'éviter d'envoyer des informations inchangées sur le réseau.

  • Ajax ne nécessite aucun plug-in de navigateur, mais nécessite que l'utilisateur autorise l'exécution de JavaScript sur le navigateur. Tout comme les applications DHTML, les applications Ajax doivent être rigoureusement testées sur de nombreux navigateurs et plateformes différents. À mesure qu'Ajax mûrit, certaines bibliothèques de programmes simplifiant l'utilisation d'Ajax sont également apparues. De même, une autre technologie de programmation d'assistance a émergé pour fournir des fonctionnalités alternatives aux utilisateurs qui ne prennent pas en charge JavaScript.

  • La principale critique de l'utilisation d'Ajax est qu'il peut casser le dos du navigateur et la fonctionnalité de favoris. Dans le cas de pages mises à jour dynamiquement, l'utilisateur ne peut pas revenir à l'état de la page précédente car le navigateur ne peut mémoriser que les pages statiques de l'historique. Les différences possibles entre une page entièrement lue et une page modifiée dynamiquement sont très subtiles ; les utilisateurs s'attendent souvent à cliquer sur le bouton retour pour annuler leur opération précédente, mais dans une application Ajax, ce n'est pas le cas. pour le faire. Cependant, les développeurs ont trouvé différentes manières de résoudre ce problème. La plupart des méthodes avant HTML5 consistaient à créer ou à utiliser un IFRAME masqué pour reproduire les modifications sur la page lorsque l'utilisateur clique sur le bouton de retour pour accéder à l'historique. (Par exemple, lorsque l'utilisateur clique à nouveau dans Google Maps, il recherche dans un IFRAME masqué, puis reflète les résultats de la recherche sur un élément Ajax pour restaurer l'état de l'application tel qu'il était à ce moment-là).

  • Concernant le problème de l'impossibilité d'ajouter un statut aux favoris ou aux signets, une méthode avant HTML5 consistait à utiliser des identifiants de fragments d'URL (souvent appelés ancres, la partie après # dans l'URL) pour garder une trace et permettre à l'utilisateur de revenir à un état d'application spécifié. (De nombreux navigateurs permettent à JavaScript de mettre à jour dynamiquement les ancres, ce qui permet aux applications Ajax de mettre à jour les ancres tout en mettant à jour le contenu affiché.) HTML5 pourra plus tard manipuler directement l'historique de navigation, stocker l'état des pages Web sous forme de chaînes et ajouter des pages Web à Favoris Web Lors du découpage ou de la mise en signet, l'état est conservé de manière invisible. Les deux méthodes ci-dessus peuvent également résoudre le problème de l’impossibilité de battre en retraite en même temps.

  • Lors du développement d'Ajax, la latence du réseau, c'est-à-dire l'intervalle entre l'utilisateur faisant une requête et le serveur envoyant une réponse, doit être soigneusement prise en compte. Ne pas donner aux utilisateurs une réponse claire, ne pas pré-lire correctement les données ou gérer incorrectement XMLHttpRequest entraînera l'ennui des utilisateurs. Une solution courante consiste à utiliser un composant visuel pour indiquer à l'utilisateur que le système effectue des opérations en arrière-plan et lit des données et du contenu.

2. Grâce à la technologie de communication WebSocket, un canal bidirectionnel basé sur une connexion TCP peut être fourni entre le navigateur et le serveur, facilitant ainsi l'échange de données.

  • Moins de frais généraux de contrôle. Lorsque des données sont échangées entre le serveur et le client après la création d'une connexion, les en-têtes de paquets utilisés pour le contrôle du protocole sont relativement petits. Sans extensions, pour le contenu serveur à client, la taille de l'en-tête n'est que de 2 à 10 octets (liée à la longueur du paquet) ; pour le contenu client à serveur, des en-têtes supplémentaires doivent être ajoutés. Par rapport aux requêtes HTTP qui comportent à chaque fois des en-têtes complets, cette surcharge est considérablement réduite.

  • Des performances en temps réel plus fortes. Le protocole étant en duplex intégral, le serveur peut envoyer des données de manière proactive au client à tout moment. Comparé aux requêtes HTTP, qui doivent attendre que le client lance une requête avant que le serveur puisse répondre, le délai est nettement inférieur, même par rapport à des méthodes d'interrogation longues similaires telles que Comet, elles peuvent fournir des données plus de fois sur une courte période ; temps.

  • Restez connecté. Contrairement à HTTP, Websocket doit d'abord créer une connexion, ce qui en fait un protocole avec état, et certaines informations d'état peuvent être omises lors des communications ultérieures. Les requêtes HTTP peuvent devoir contenir des informations d'état (telles que l'authentification de l'identité, etc.) dans chaque requête.

  • Meilleur support binaire. Websocket définit des trames binaires, qui peuvent gérer le contenu binaire plus facilement que HTTP.

  • peut prendre en charge les extensions. Websocket définit des extensions et les utilisateurs peuvent étendre le protocole et implémenter certains sous-protocoles personnalisés. Par exemple, certains navigateurs prennent en charge la compression, etc.

  • Meilleur effet de compression. Par rapport à la compression HTTP, Websocket, avec la prise en charge des extensions appropriées, peut hériter du contexte du contenu précédent et améliorer considérablement le taux de compression lors de la transmission de données similaires.

Tutoriel recommandé : "Golang"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn