2012-07-01 3 views
0

내 웹 페이지를 사용할 때 몇 가지 아약스 작업을 보내거나 받아야합니다. 현재 모든 이벤트를 처리 할 하나의 아약스 처리기를 사용합니다. 모든 Ajax 요청은 "(type) | {json string}"형식을 사용하여 보내고받습니다.하나의 아약스 처리기 또는 여러 처리기?

js 코드 조각은 응답 텍스트 구문 분석 -> 유형 가져 오기 -> 선택 ... 각 대/소문자에 대해 뭔가하는 Ajax 요청/응답을 처리합니다.

이 기능은 작동하지만 AJax 이벤트가 커지면 0에서 99까지 너무 많은 경우가 있습니다. 유지 관리 또는 추가 개발 작업이 쉬운 일은 아닙니다.

아마 하나의 아약스 처리기를 여러 개로 나눌 필요가 있을까요? 그런 다음 브라우저가 특정 처리기로 보내야하는 Ajax 응답을 어떻게 알 수 있습니까?

모든 조언을 주시면 감사하겠습니다.

는 현재 코드는 다음과 같습니다 없습니다 : (간단한 자바 스크립트를 사용하여 페이지 중 하나, 사용에는 프레임 워크)

xmlhttp.onreadystatechange = function() { 
       if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { 
        //alert(xmlhttp.responseText); 
        var reply = decodeArray(xmlhttp.responseText); //convert to json object and some other stuff 
        switch (reply.type) { 
          case 0: 
          case 1: 
          .... 

        } 
+0

현재 코드 공유 – Rab

답변

0

이 소프트웨어 엔지니어링 근본적인 문제 중 하나입니다. 반복적으로 수행하는 작업이 있지만 각 변형마다 세부 사항이 약간 변경되므로 코드를 재사용하고 깨끗하게 유지하는 방법은 무엇입니까? 모든 실질적인 앱에이 문제가 있습니다.

좋은 디자인을 적용해야 분리 문제. 나는 보통 앱의 다른 부분과는 완전히 별 개인 API를 개발하고있다. 내 API는 한 가지만하고 한 가지만 수행합니다. 서버와 통신합니다.

해당 애플리케이션 코드가 없습니다.

즉, 필요한 경우 다른 앱에서 API를 재사용 할 수 있습니다. 또한 앱과 별도로 API를 테스트 할 수 있음을 의미합니다.

그럼 loadObject과 같은 작업을해야한다고 가정 해 보겠습니다. 응용 프로그램은

App.API = { 
    loadObject: function(params, onSuccess, onFail) {...} 
} 

이가 분리시켜 유지하는 열쇠가 onSuccessonFail 콜백입니다 본다. API를 사용하는 응용 프로그램은이 함수를 전달합니다. 그래서 API는 애플리케이션 특정 로직에 대해 아무 것도 모릅니다.이 콜백이 적절하게 발생하면 애플리케이션 로직 만 알면됩니다. 콜백은 응답 데이터 인 인수를 취하는 메소드입니다. 모든 API는 응답 데이터를 콜백에 전달합니다.

대부분의 경우 아약스 호출의 세부 사항에는 공통된 항목이 많기 때문에 요청을 발생시키는 일종의 XhrWrapper을 작성합니다. 에 따라서 당신의 loadObjects 당신이 요청

xhr.sendRequest(url, method, onSuccess, onFail); 

발사 XHR이 모든 지루함을 최소화이 방법을 확인하기 위해 XHR 도우미를 사용합니다.

분명히 더 멀리 갈 수 있습니다. 예를 들어, 대부분의 경우 실패가 좋지 않으므로 내 xhr 래퍼는 기본 onFail 구현을 가지며 특정 API 메소드가 의미가있는 경우에만 재정의를 전달할 수 있습니다.