Ответ 1
Стив (создатель нокаута) объяснил разницу в своем блоге:Я очень хорошо знаком с Rx для JavaScript, недавно использовал его в значительной степени на большой проект, и на самом деле аспекты дизайна Нокаут производится с учетом моего опыта Rx.
Ключевое различие между реализацией нокаутов шаблона наблюдателя и Rxs является что нокаут автоматически регистрирует ассоциации и зависимости между наблюдаемыми из обычного процессуального кодекса, без необходимости задайте их заранее, используя специальный функциональный API. я хотел Нокаутом, чтобы использовать обычный процедурный/императивный стиль, поскольку его больше знакомый и доступный для большинства разработчиков.
Другое отличие что Rx оптимизирован для составления потоков событий без состояния. В сначала я был в восторге от этого и его функциональной чистоты, но через некоторое время все это становилось все более похожим на то, что я прыгал через неудобные обручи и пришлось изобретать дополнительные способы моделирования состояния для управления Пользовательский интерфейс работает эффективно. Вот почему, в Нокауте, все наблюдаемые могут быть обработанными как состояние - например, вы всегда можете прочитать их последние значение (которое кэшируется, кстати, оно не пересчитывается до тех пор, пока основные изменения данных).
Rx идет дальше, чем нокаут в продвинутый способы составления потоков событий, тогда как нокаут идет дальше, чем Rx в разработку пользовательского интерфейса, позволяя привязывать его наблюдаемые к HTML DOM элементов и шаблонов и манипулировать ими любым способом. Rx - отлично подходит для того, что он делает, но оказалось не таким, каким я хотел создавать богатые пользовательские интерфейсы - отсюда дизайн нокаута.