2011-02-24 7 views
40

누구나 RxJsKnockout의 차이점을 알고 있습니까? 표면에 나에게 그들은 같은 문제를 해결하려고 이벤트 구동 UI를 구축하려는 것 같습니다. 그러나 두 가지 경험이있는 사람, 어떻게 다른가/비슷한가? 내가 선택할 수 있도록 그들에 관해 뭔가를 설명해 주시겠습니까? 당신이 크로스 오버 볼 줄 왜 내가 볼 수 있지만 그들은, 실제로는 매우 다른 프레임 워크있어Knockout.js와 Rx.js의 차이점은 무엇입니까?

답변

56

스티브 (녹아웃의 창조자) 자신의 블로그에 explained the difference :

나는 최근에있는 것은 몹시 큰 프로젝트에 를 사용하고, 디자인의 사실의 측면에서, 자바 스크립트 수신 잘 알고 있어요 녹아웃은 내 Rx 경험을 염두에두고 작성되었습니다.

마네의 관찰자 패턴의 구현 및 Rx의 주요 차이점 는 마네가 자동으로 특별한 기능 API하지만 앞을 지정할 하지 않고도 일반 프로 시저 코드에서 관찰 가능한 사이의 연관성과 의존성 을 유추하는 입니다. 나는 노크 아웃이 일반적인 절차/명령형 코드를 사용하기를 원했기 때문에 대부분의 개발자에게 친숙하고 접근하기가 더 편했습니다.

또 다른 차이점은입니다. Rx는 상태가없는 이벤트 스트림을 구성하기 위해 최적화되어 있습니다. 처음에 나는 이것과 기능적 순도에 대해 열정을 가지고 있었지만, 얼마 지나지 않아서 나는 어색한 농구를 뛰어 넘었고, UI 명령을 효율적으로 관리하기위한 상태를 시뮬레이트하는 특별한 방법을 고안해야했다. 그런 이유로 Knockout에서 모든 관찰 가능 항목은 을 상태 저장으로 처리 할 수 ​​있습니다. 예를 들어 최신 값 (항상 캐싱 됨 - 기본 데이터가 변경 될 때까지 다시 계산되지 않음)을 읽을 수 있습니다. 마네는 HTML DOM에 요소와 템플릿의 관찰 가능한 결합하고 그들에게 당신이 원하는 방식으로 조작시키는, UI 개발에 수신 보다 더 나아가 반면

수신은 이벤트 스트림을 구성의 고급 방법에 넉 아웃보다 더 간다. Rx는 입니다. 정확히 무엇을했는지 정확히 알 수는 없었습니다. 풍부한 UI를 만들려고합니다. 따라서 녹아웃 디자인입니다.

20

:

RxJs 이벤트 및 웹 요청과 같은 비동기 스트림에 대한 작업을 구성하는 수단을 제공하고, 고급 시나리오를 포함 스트림을 결합처럼 (A와 B 모두가 발생했을 때,이를 시작하지만 A 또는 B가 다시 발생하면 취소)

녹아웃 당신이 모델을 통해 사용자 인터페이스의 상태를 관리 할 수있는 MVVM 프레임 워크입니다 그것의 기능을 매핑합니다. 이렇게하면보기의 논리를보기와 분리 할 수 ​​있습니다.

+15

이제 Rx와 Ko Observables 사이를 연결할 수 있습니다. 참조 : https://github.com/cburgdorf/Knockout-Rx/blob/master/app/App.ViewModels.SearchViewModel.js – Christoph