programing

Dojo를 이용하여 라이브 검색/검색 제안을 구현할 수 있는 방법은?

stoneblock 2023. 10. 11. 20:27

Dojo를 이용하여 라이브 검색/검색 제안을 구현할 수 있는 방법은?

Dojo Framework를 사용하는 웹 어플리케이션에서 '라이브 검색' 또는 '검색 제안' 기능을 구현하고자 합니다.검색 상자에 검색을 입력하면 일치 가능성이 있는 목록이 아래에 나타납니다.검색은 서버 측에서 수행되며 결과는 AJAX를 사용하여 브라우저로 다시 전송됩니다.

도조를 이용하여 이것을 구현하는 좋은 방법을 아는 사람이 있습니까?

다음은 몇 가지 잠재적인 옵션입니다.

  • 기본 제공 위젯 dijit. 양식입니다.
    이것은 매우 유사한 기능을 가지고 있지만 제한된 데이터 세트에서만 사용되는 것을 보았습니다.예제에서는 항상 작은 목록(예: 미국의 50개 주)을 사용하고 클라이언트 측 필터링을 위해 전체 데이터 세트를 미리 로드합니다.하지만 dojox.data에 연결할 수 있을 것 같습니다.서버측 검색을 위한 JsonQueryRestore — 작동 여부를 확인할 수 있는 사람이 있습니까?

  • 쿼리 상자 http://marumushi.com/code/querybox/
    이 구현은 주로 작업을 수행하지만 약간의 버그가 있고 유지보수되고 있는 것 같지 않습니다.코드를 사용하기 전에 버그 수정을 좀 해야 할 것 같습니다.

  • 메드릭스 http://blog.medryx.org/2008/09/10/dijitsearch-part-2/
    이것도 일을 하는 것처럼 보이지만 '알파 수준' 코드로 묘사되고 코드에 대한 연결이 끊어진 것처럼 보입니다.

저는 아마도 위의 작업 중 하나를 만들 수 있겠지만, 더 나은 대안이 있는지 알고 싶습니다.

도조가 0.2일 때인 5년 전에 시행했습니다.

코드가 오래된 것이기는 하지만 사소한 것이기 때문에 공격하는 방법에 대한 아이디어를 얻을 수 있기를 바랍니다.대략적인 스케치:

  • 변경 시 트리거되는 이벤트 핸들러를 입력 상자에 첨부합니다. 입력 상자의 변경을 탐지하려면 "on keyup"을 사용합니다.
  • 아직 설정되지 않은 경우 이벤트 핸들러에 타이머를 설정하여 사용자가 입력을 멈출 때까지 기다립니다. 대기 시간은 200-500ms가 좋습니다.
    • 시간 초과는 다음과 같은 이중 역할을 수행합니다.
      • 오버로드를 방지하기 위해 서버에 대한 요청을 제한합니다.
      • 그것은 우리의 시간에 대한 인식과 타이핑 습관을 이용합니다.
  • 시간 제한이 지났고 서버 ⇒가 서버를 기다리지 않으면 지금까지 가지고 있는 문자열을 보냅니다.
  • 아직 서버를 기다리고 있다면 요청을 취소하고 다시 요청하세요.
    • 이 부분은 응용 프로그램별로 다릅니다. 서버를 오버로드하고 싶지 않으며 서버가 끊어진 연결을 잘 처리할 수 없는 경우도 있습니다.
    • 예제에서는 XHR 콜을 취소하지 않고 먼저 끝날 때까지 기다렸다가 새로운 요청을 제출합니다.
  • 서버는 즉시 표시되는 관련 결과로 응답합니다.

블로그 게시물에서 위젯으로 구현하였습니다.분명히 정확한 포장은 당신에게 달려있습니다.

언급URL : https://stackoverflow.com/questions/3649871/how-can-live-search-search-suggestions-be-implemented-using-dojo