>백엔드 개발 >Golang >Golang과 JS는 어떻게 상호작용하나요?

Golang과 JS는 어떻게 상호작용하나요?

Guanhui
Guanhui원래의
2020-06-13 10:39:594727검색

Golang과 JS는 어떻게 상호작용하나요?

Golang과 JS는 어떻게 상호작용하나요?

1. 전체 웹페이지를 다시 로드하지 않고도 웹페이지의 일부를 업데이트할 수 있는 AJAX 기술을 사용합니다.

  • Ajax를 사용하는 가장 큰 장점은 전체 페이지를 업데이트하지 않고도 유지할 수 있다는 것입니다. 이를 통해 웹 애플리케이션은 사용자 작업에 더 빠르게 응답하고 네트워크를 통해 변경되지 않은 정보를 보내는 것을 방지할 수 있습니다.

  • Ajax에는 브라우저 플러그인이 필요하지 않지만 사용자가 브라우저에서 JavaScript를 실행할 수 있도록 허용해야 합니다. DHTML 애플리케이션과 마찬가지로 Ajax 애플리케이션도 다양한 브라우저와 플랫폼에서 엄격하게 테스트되어야 합니다. Ajax가 성숙해짐에 따라 Ajax 사용을 단순화하는 일부 프로그램 라이브러리도 나왔습니다. 마찬가지로, JavaScript를 지원하지 않는 사용자에게 대체 기능을 제공하기 위해 또 다른 보조 프로그래밍 기술이 등장했습니다.

  • Ajax 사용에 대한 주요 비판은 브라우저의 뒤로 및 북마크 기능을 손상시킬 수 있다는 것입니다. 동적으로 업데이트되는 페이지의 경우 브라우저는 기록에서 정적 페이지만 기억할 수 있으므로 사용자는 이전 페이지 상태로 돌아갈 수 없습니다. 완전히 읽힌 페이지와 동적으로 수정된 페이지 사이의 차이는 매우 미미합니다. 사용자는 종종 이전 작업을 취소하기 위해 뒤로 버튼을 클릭할 것으로 예상하지만 Ajax 애플리케이션에서는 그렇지 않습니다. 그렇게 하려면. 그러나 개발자들은 이 문제를 해결하기 위해 다양한 방법을 고안해냈습니다. HTML5 이전의 대부분의 방법은 사용자가 기록에 액세스하기 위해 뒤로 버튼을 클릭할 때 페이지의 변경 사항을 재현하기 위해 숨겨진 IFRAME을 생성하거나 사용하는 것이었습니다. (예를 들어 사용자가 Google 지도에서 다시 클릭하면 숨겨진 IFRAME에서 검색한 다음 검색 결과를 Ajax 요소에 반영하여 애플리케이션 상태를 당시의 상태로 복원합니다.)

  • 즐겨찾기나 북마크에 상태를 추가할 수 없는 문제와 관련하여 HTML5 이전의 한 가지 방법은 URL 조각 식별자(종종 앵커라고 함, URL에서 # 다음 부분)를 사용하여 추적하고 사용자가 다음을 수행할 수 있도록 하는 것이었습니다. 지정된 애플리케이션 상태로 돌아갑니다. (많은 브라우저에서는 JavaScript가 앵커를 동적으로 업데이트할 수 있도록 허용하므로 Ajax 애플리케이션이 표시된 콘텐츠를 업데이트하는 동안 앵커를 업데이트할 수 있습니다.) HTML5는 나중에 검색 기록을 직접 조작하고, 웹 페이지 상태를 문자열 형식으로 저장하고, 웹 페이지를 웹 즐겨찾기를 클리핑하거나 북마크할 때 상태가 눈에 보이지 않게 유지됩니다. 위의 두 가지 방법은 동시에 후퇴할 수 없는 문제도 해결할 수 있습니다.

  • Ajax를 개발할 때 네트워크 대기 시간, 즉 사용자가 요청하고 서버가 응답을 보내는 사이의 간격을 신중하게 고려해야 합니다. 사용자에게 명확한 응답을 제공하지 않거나, 데이터를 제대로 미리 읽지 않거나, XMLHttpRequest를 부적절하게 처리하면 사용자는 지루함을 느끼게 됩니다. 일반적인 솔루션은 시각적 구성 요소를 사용하여 시스템이 백그라운드 작업을 수행하고 데이터와 콘텐츠를 읽고 있음을 사용자에게 알리는 것입니다.

2. WebSocket 통신 기술을 사용하면 브라우저와 서버 간에 TCP 연결 기반의 양방향 채널을 제공할 수 있어 데이터 교환이 더 쉬워집니다.

  • 제어 오버헤드가 적습니다. 연결이 이루어진 후 서버와 클라이언트 간에 데이터를 교환할 때 프로토콜 제어에 사용되는 패킷 헤더는 상대적으로 작습니다. 확장이 없으면 서버-클라이언트 콘텐츠의 경우 헤더 크기는 2~10바이트(패킷 길이와 관련)이며, 클라이언트-서버 콘텐츠의 경우 추가 헤더를 4바이트 마스크에 추가해야 합니다. 매번 완전한 헤더를 전달하는 HTTP 요청과 비교하면 이 오버헤드가 크게 줄어듭니다.

  • 더 강력해진 실시간 성능. 프로토콜은 전이중이므로 서버는 언제든지 클라이언트에 데이터를 적극적으로 보낼 수 있습니다. 서버가 응답하기 전에 클라이언트가 요청을 시작할 때까지 기다려야 하는 HTTP 요청과 비교할 때, Comet과 같은 유사한 긴 폴링 방법과 비교해도 지연이 훨씬 적습니다. 시간.

  • 연결 상태를 유지하세요. HTTP와 달리 Websocket은 먼저 연결을 생성해야 하므로 상태 저장 프로토콜이 되며 후속 통신 중에 일부 상태 정보가 생략될 수 있습니다. HTTP 요청은 각 요청에 상태 정보(예: 신원 인증 등)를 전달해야 할 수도 있습니다.

  • 더 나은 바이너리 지원. Websocket은 HTTP보다 바이너리 콘텐츠를 더 쉽게 처리할 수 있는 바이너리 프레임을 정의합니다.

  • 확장 기능을 지원할 수 있습니다. Websocket은 확장을 정의하며 사용자는 프로토콜을 확장하고 일부 사용자 정의 하위 프로토콜을 구현할 수 있습니다. 예를 들어 일부 브라우저는 압축 등을 지원합니다.

  • 더 나은 압축 효과. HTTP 압축과 비교하여 Websocket은 적절한 확장 지원을 통해 이전 콘텐츠의 컨텍스트를 상속할 수 있으며 유사한 데이터를 전송할 때 압축률을 크게 향상시킬 수 있습니다.

추천 튜토리얼: "Golang"

위 내용은 Golang과 JS는 어떻게 상호작용하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.