2010-08-06 2 views
5

웹 애플리케이션에서 컴포넌트 간 통신이 필요하며이를 수행하는 여러 가지 방법을 고려하고 있습니다. 나는 몇 가지 아이디어를 가지고 있지만 다른 아이디어를 환영합니다.자바 스크립트의 컴포넌트 간 통신

먼저 빠르고 간단한 예입니다. 비동기 적으로로드되는 두 개의 개별 구성 요소가 페이지에 있습니다. 구성 요소은 html의 노드에 jquery 기반 비헤이비어가 포함 된 javascript 객체가 포함 된 HTML 청크를 의미합니다. 사용자가 한 구성 요소와 상호 작용할 때 다른 구성 요소에서 변경이 이루어져야하며 반대의 경우도 마찬가지입니다.

여기서 기억해야 할 핵심 사항은 각 구성 요소가 자체 포함 된 단위 여야한다는 것입니다. 응용 프로그램의 다른 부분이나 다른 응용 프로그램에서도 다시 사용할 수 있습니다. 따라서 페이지에 다른 구성 요소가 있는지 여부는 알 수 없습니다.

솔루션에 대한 현재의 생각은 구성 요소가 관심이있는 사용자 지정 이벤트를 수신하는 동시에 작업이 수행 될 때 사용자 지정 이벤트를 보내는 것입니다. 따라서 각 구성 요소는 다른 구성 요소에 의해 트리거되는 이벤트를 수신합니다.

비동기 로딩 때문에 한 구성 요소가 다른 구성 요소보다로드하는 데 시간이 오래 걸릴 수 있습니다. 이벤트가 너무 빨리 전송되어 손실 될 가능성이 있습니다. 어떤 경우에는 괜찮을 수도 있지만 경우에 따라 구성 요소가 보내는 모든 이벤트가 소비되도록해야합니다.

그래서 여기에 몇 가지 관련 질문입니다 :

가 트리거 된 후 이벤트에 어떻게됩니까
  1. ? 트리거되었을 때 청취자가 없으면 그냥 사라지나요?

  2. 트리거 된 짝수 신호가 소비되었거나 유실되었는지 감지하는 방법이 있습니까?

  3. 각 구성 요소에 대한 좋은 방법은 은 다른 구성 요소에 대해 알고?

  4. 이러한 유형의 것을 다루는 기존 오픈 소스 자바 스크립트 프로젝트 또는 jquery 플러그인이 있습니까? 안부에서

나는 각 구성 요소가 레지스터가 수신하는 이벤트의 유형을 포함 이벤트의 일종을 보낼 수 있다고 생각하고, # 질문 3과가 등록되어있는 구성 요소의 목록 와. 구성 요소는 이러한 등록 이벤트를 수신합니다. 타이머를 사용하는 일종의 등록 논리는 구성 요소로드 프로세스 중에 올바른 구성 요소가 함께 등록되도록하는 데 사용됩니다. 등록이 완료되면 구성 요소는 정상적인 이벤트를 보낼 수 있습니다.

답변

1

웹 서비스는 여기를 참조하기에 좋은 모델입니다. 클라우드 컴퓨팅 (또는 분산 컴퓨팅 플랫폼)에 사용되는 웹 서비스를 상호 연결하면 대개 일종의 메시지 대기열 또는 그 사이에 "버스"가 구현됩니다.

"이벤트"를 처리하는 글로벌 메시지 큐를 만드는 방법에 대해 생각해 볼 수 있습니다. 작업을 수행 할 때까지 (일반적으로 작업이라고 함)이를 구독자에게 게시하거나 기다릴 수 있습니다.

+1

좋습니다. 메시지 버스는 응용 프로그램 레벨에있을 수 있으며 페이지로드시 시작됩니다. 그런 다음 구성 요소가 이벤트를 보내면 버스가 구독자가 등록 할 때까지 해당 가입자를 적절한 가입자 또는 보류 장치로 푸시합니다. 이벤트의 유효 기간이 만료되면 원래 송신 구성 요소에 이벤트가 실패했음을 알릴 수도 있습니다. – Tauren

1

내가하려는 일을 완전히 캡슐화했는지 모르겠지만 JavaScriptMVC과 같은 오픈 소스 프로젝트가 유용 할 수 있습니다.이 오픈 소스 프레임 워크는 컨트롤러가 이벤트 위임을 처리하고 사용자가 찾고자하는 분리를 제공합니다. 또한 jQuery를 활용합니다.

이 사이트는 탐색 조금 하드 (또는 적어도 구체적인 정보를 많이 찾을 수) (길이 12 분)하지만 인트로 영상이 유용합니다.

희망이 도움이됩니다. 행운을 빕니다!

+0

감사! 이전에 JavascriptMVC를 살펴 봤지만 아직 사용하지는 않았습니다. 내 애플리케이션에서 이미 다르게 처리 되었기 때문에 작업의 올바른 도구라고 확신하지 못합니다. 그러나 이벤트 처리와 관련하여 더 자세히 살펴볼 것입니다. 작은 학습 곡선으로 좀 더 가벼운 것을 찾으려고했습니다. – Tauren

4

메시지 큐잉은 실제로 당신이 찾고있는 것입니다. 커스텀 이벤트를 듣고, 메시지를 받고, 타이밍과 시퀀스를 가지고 놀고, 조절하고, 방송하는 등의 다양한 옵저버 객체를 포함하는 다양한 계획을 구상 할 수있을 것이라고 확신합니다.하지만이 모든 것을 배우기 전에이 jQuery message queuing plug-in을 살펴보십시오. 좋은 출발점이 될 수 있습니다. 이벤트 관리 주위에 고려해야 할 다른

+0

아주 멋지다! 전에 Ben Alman의 플러그인을 살펴 보았지만 그 당시에는 이와 같은 것을 필요로하지 않아야하고 잊어 버렸습니다. 지적 해 주셔서 감사합니다. 완벽 할 수도 있습니다. – Tauren

1

뭔가 마이크로 소프트 (RxJS)에서 Reactive Extensions for JavaScript 있습니다. 그것은 관찰 가능한 시퀀스로 이벤트를 등록하는 JavaScriptMVC의 컨트롤러 라인과 동일하지만 LINQ와 유사한 구문으로 이벤트와 상호 작용할 수 있습니다.

마태 복음 Podwysocki는 RxJS 작업에 대한 좋은 블로그 게시물의 번호가 있습니다. 여기에 몇 가지 좋은 게시물입니다 :

Introduction to RxJS (좋은 소개) 그의 많은 다른 게시물

그리고 RxJS에 대한 몇 가지 hands on labs에 대한 링크에 대한 링크
Error Handling Pt. 2.

잘하면이 또한 도움이됩니다.