Est-ce que quelqu'un connaît les différences entre RxJs et Knockout ? Pour moi, à première vue, ils semblent essayer de résoudre le même problème, de créer une interface utilisateur événementielle. Mais quelqu'un qui a eu l'expérience des deux, en quoi diffèrent-ils / en quoi sont-ils similaires? Pouvez-vous décrire quelque chose à leur sujet pour m'aider à choisir?
Réponses
Trop de publicités?Steve (le créateur de knock-out) a expliqué la différence sur son blog:
Je suis très familier avec Rx pour JavaScript, ayant récemment utilisé lourdement sur un gros projet, et, en fait, les aspects de la conception de Knock-out sont faites avec mon Rx expériences à l'esprit.
La différence clé entre les knock-out de la mise en œuvre du modèle observateur et Rx de l'est Ko déduit automatiquement les associations et les dépendances entre observables ordinaire du code de procédure sans que vous ayez à les spécifier à l'avant si spécial fonctionnelle de l'API. Je voulais Knock-out à l'utilisation régulière de procédure/impératif de style de code car il est plus familier et accessible pour la plupart des développeurs.
Une autre différence est que Rx est optimisé pour la composition des flux, sans état. Au d'abord, j'étais enthousiaste à propos de ce et de ses fonctionnelle de pureté, mais après quelque temps, il se sentait de plus en plus comme j'étais en sautant à travers maladroit cerceaux et a dû inventer d'autres moyens pour simuler l'état à gérer INTERFACE utilisateur les commandes de manière efficace. C'est pourquoi, dans le knock-out, tous les phénomènes observables peuvent être traités comme des stateful - par exemple, vous pouvez toujours lire leur dernier valeur (ce qui est mis en cache, par la façon dont - il ne pas recalculer jusqu'à ce que le données sous-jacentes changent).
Rx va plus loin que les Huitièmes avancées les moyens de la composition des flux d'événements, alors que le knock-out va plus loin que la Rx dans le développement de l'INTERFACE utilisateur, vous permettant de lier ses observables à DOM HTML éléments et modèles et de les manipuler de toute façon que vous voulez. Rx est grand dans ce qu'il fait, mais s'est avéré ne pas être exactement comme je le souhaitais construire riche Isu, d'où la conception de knock-out.
Ils sont en fait assez différents cadres, mais je peux voir pourquoi vous devriez voir crossover:
RxJs fournit un moyen de composer des opérations contre asynchrone flux, comme les événements et les requêtes web, et comprend des scénarios comme la combinaison des flux (lorsque A et B se produisent, démarrer, mais l'annuler si A ou B se produire à nouveau)
Knock-out est un framework MVVM qui vous permet de gérer l'état de votre interface utilisateur via un modèle que les cartes de ses fonctionnalités. Cela permet à votre point de vue est logique d'être séparé de votre point de vue.