Каковы отличительные особенности Highland.js, Kefir.js и Rx.js?
Поскольку в SO необходимо избегать субъективных ответов, я специально задаюсь вопросом: каковы функциональные и / или различия в производительности между этими тремя функциональными / реактивными библиотеками, которые заставили бы меня выбрать одну из них среди других? Я исключил BaconJS из-за его зависимости от jQuery. Я новичок в потоках JS и прежде всего заинтересован в том, чтобы начать знакомство с ними сначала в NodeJS, а затем в контексте AngularJS. Если вы выбрали один из них над другими, какие критерии приводят к выбору?
2 ответа
Все ниже довольно субъективно:)
RxJS
Плюсы:
- Документация и большое сообщество.
- Общий интерфейс с семейством Rx*. Это большое преимущество, потому что вы можете брать образцы из сообщества RxJava.
- Много примитивов в библиотеке и несколько примеров, как их использовать
- обратное давление
- это своего рода эталон для других библиотек
Минусы:
- Иногда это выглядит слишком сложным
- Реализовано с учетом "Java"
Bacon.js
Pros
- Действительно хорошая документация с некоторыми продвинутыми примерами (игра-змея, реализация, например)
- много примитивов
- Реализовано с учетом JS
- Я нашел, что это действительно легко начать
Минусы - он не реализует противодавление, что делает его глупым на бэкэнде
Highland.js
Плюсы:
- он предназначен для работы со средой node.js(или browserify), которая действительно хороша
- нет инопланетных концепций (с точки зрения JavaScript/ узла)
- обратное давление
- реализация на вершине потоков Node, что действительно отличная идея
- маленький след
Минусы:
- Глупая документация и без примеров. На самом деле каждый раз, когда я пытаюсь взять образцы из Rx или Bacon
- отсутствие некоторых примитивов. На самом деле вы можете реализовать большинство из них самостоятельно, но это болезненно (см. Предыдущий пункт)
Резюме: из-за отсутствия сэмплов вы все их выучите:) ИМХО, наиболее перспективным является Highland.js. Но RxJs гораздо более зрелый
Совет: если вам нужно что-то спросить в Stackru, используйте диалект RxJS и переведите это на молодежь
В хранилище https://github.com/Reactive-Extensions/RxJS есть страницы, сравнивающие их (естественно, все остальные с RxJS).