ホームページ  >  記事  >  バックエンド開発  >  Golang と JS はどのように相互作用しますか?

Golang と JS はどのように相互作用しますか?

Guanhui
Guanhuiオリジナル
2020-06-13 10:39:594679ブラウズ

Golang と JS はどのように相互作用しますか?

Golang と JS はどのように相互作用するのでしょうか?

1. Web ページ全体をリロードせずに Web ページの一部を更新できる AJAX テクノロジを使用します。

  • Ajax を使用する最大の利点は、ページ全体を更新せずにデータを維持できます。これにより、Web アプリケーションはユーザーのアクションにより迅速に応答できるようになり、変更されていない情報がネットワーク上に送信されることを回避できます。

  • Ajax にはブラウザ プラグインは必要ありませんが、ユーザーがブラウザ上で JavaScript を実行できるようにする必要があります。 DHTML アプリケーションと同様に、Ajax アプリケーションもさまざまなブラウザーやプラットフォームで厳密にテストする必要があります。 Ajax が成熟するにつれて、Ajax の使用を簡素化するいくつかのプログラム ライブラリも登場しました。同様に、JavaScript をサポートしていないユーザーに代替機能を提供する別の支援プログラミング テクノロジが登場しました。

  • Ajax の使用に対する主な批判は、ブラウザのバック機能やブックマーク機能が損なわれる可能性があることです。動的に更新されるページの場合、ブラウザーは履歴に静的なページしか記憶できないため、ユーザーは前のページの状態に戻ることはできません。完全に読み取られたページと動的に変更されたページの違いは非常に微妙であり、ユーザーは多くの場合、「戻る」ボタンをクリックして前の操作をキャンセルすることを期待しますが、Ajax アプリケーションではそうではありません。そうするために。ただし、開発者はこの問題を解決するためにさまざまな方法を考え出しており、HTML5 より前のほとんどの方法は、ユーザーが履歴にアクセスするために戻るボタンをクリックしたときにページ上の変更を再現するために、非表示の IFRAME を作成または使用することでした。 (たとえば、ユーザーが Google マップでクリックして戻ると、非表示の IFRAME が検索され、検索結果が Ajax 要素に反映されて、アプリケーションの状態がその時点の状態に復元されます)。

  • お気に入りやブックマークにステータスを追加できないという問題については、HTML5 が登場する 1 つ前には、URL フラグメント識別子 (アンカーと呼ばれることが多く、URL の # の後の部分) が使用されていました。 ) を追跡し、ユーザーが指定されたアプリケーションの状態に戻れるようにします。 (多くのブラウザでは、JavaScript でアンカーを動的に更新できるため、Ajax アプリケーションは表示コンテンツを更新しながらアンカーを更新できます。) HTML5 では、後に閲覧履歴を直接操作したり、Web ページのステータスを文字列の形式で保存したり、Web ページを追加したりできるようになります。ウェブのお気に入り。クリップまたはブックマークすると、状態は目に見えずに保持されます。上記の2つの方法で、退却できない問題も同時に解決できます。

  • Ajax を開発する場合、ネットワーク遅延、つまりユーザーのリクエストとサーバーの応答の間の間隔を慎重に考慮する必要があります。ユーザーに明確な応答を与えなかったり、データを適切に先読みしなかったり、XMLHttpRequest を不適切に処理したりすると、ユーザーは退屈してしまいます。一般的な解決策は、視覚的なコンポーネントを使用して、システムがバックグラウンド操作を実行し、データとコンテンツを読み取っていることをユーザーに伝えることです。

2. WebSocket 通信技術を使用すると、ブラウザとサーバーの間に TCP 接続による双方向チャネルを提供でき、データの交換が容易になります。

  • #制御オーバーヘッドの削減。接続の作成後にサーバーとクライアントの間でデータが交換される場合、プロトコル制御に使用されるパケット ヘッダーは比較的小さいです。拡張機能を使用しない場合、サーバーからクライアントへのコンテンツの場合、ヘッダー サイズは 2 ~ 10 バイト (パケット長に関連) のみですが、クライアントからサーバーへのコンテンツの場合は、追加のヘッダーを追加する必要があります。4 バイトのマスク。毎回完全なヘッダーを送信する HTTP リクエストと比較して、このオーバーヘッドは大幅に削減されます。

  • より強力なリアルタイム パフォーマンス。プロトコルは全二重であるため、サーバーはいつでもプロアクティブにデータをクライアントに送信できます。サーバーが応答する前にクライアントがリクエストを開始するのを待つ必要がある HTTP リクエストと比較すると、遅延が大幅に少なく、Comet などの同様の長いポーリング方法と比較しても、短期間により多くの回数データを配信できます。時間。

  • 接続を維持します。 HTTP とは異なり、Websocket は最初に接続を作成する必要があるため、ステートフル プロトコルとなり、その後の通信中に一部の状態情報が省略される可能性があります。 HTTP リクエストでは、各リクエストにステータス情報 (ID 認証など) を含める必要がある場合があります。

  • バイナリサポートの改善。 Websocket はバイナリ フレームを定義しており、HTTP よりも簡単にバイナリ コンテンツを処理できます。

  • は拡張機能をサポートできます。 Websocket は拡張機能を定義しており、ユーザーはプロトコルを拡張して、カスタマイズされたサブプロトコルを実装できます。たとえば、一部のブラウザは圧縮などをサポートしています。

  • 圧縮効果が向上しました。 HTTP 圧縮と比較して、適切な拡張サポートを備えた Websocket は、以前のコンテンツのコンテキストを継承し、同様のデータを送信する際の圧縮率を大幅に向上させることができます。

推奨チュートリアル: 「

Golang

以上がGolang と JS はどのように相互作用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。