現在、リアクティブプログラミングの周囲には多くのノイズがあります。 JavaScriptとNode.jsに適用可能なこの分野を研究するのに少し時間を費やし、私の意見で最も興味深いライブラリについて決めました。
Rxjs
これは一種のベンチマークです。ReactiveExtensions for .netの登場により、ある意味でこの分野が生まれました。
長所:
- ドキュメントと大規模なコミュニティ( Githubで15,000を超える星 、SOで3073を超えるタグ );
- これは、Rx *ファミリーのライブラリです。つまり、同じインターフェイスを使用します。 実際には、これは、RxJavaおよび元のReactive Extensionsの例を見ることができることを意味します。
- ほとんどすべての場合にプリミティブがあります。
- バックプレッシャーがあります ( ここで、それが何であるかを読むことができます );
- このライブラリには1冊の本があります。
短所:
- マタンのように見えることもあります。 ドキュメントは奈落の底に似ています-それを頭全体に引っ張る方法は明確ではありませんか?
- 頭の中にJavaを持っている人によって実装されています(多くの抽象化の愛、Java / .Netのイディオム、時々奇妙な署名)。 これはそれほど悪くはありませんが、JSで見た目がおかしいだけです( スケジューラの例-シングルスレッド環境でこれがすべて必要な理由はまだわかりません)。 したがって、TypeScript`eで記述したいという願望
Bacon.js
流行に敏感な人のためのファッショナブルなライブラリ-今では誰もが忘れてしまった
長所
- コミュニティからの優れたドキュメントと優れた例( ゲームSnakeなど )。
- Rx *のほぼすべてのプリミティブが実装されています。
- JSおよびJSのバックグラウンド全体で最初に実装されました。
- 私見、例とドキュメントを読むだけで始めるのは非常に簡単です。
短所
- バックプレッシャーなし-バックエンド開発を忘れましょう
Highland.js
caolanの図書館-asyncによる写真
長所:
- それはすぐにJS / Node.jsのために書かれたもので、彼らに何か大きなものを書き、言語/プラットフォームを愛しています-つまり、JS-idiomatとNode.jsが頭にあります(次の段落を参照)。
- Node.js Streamの上に構築され、これによりライブラリのサイズが小さくなりました。 さらに、主観的には、すべてを考えるのが非常に簡単です。ストリームAがあり、それで何かを実行し、ストリームBにパイプします(ここに私の記事の例を示します )。
- バックプレッシャー-そして、私が理解している限り、手書きで書く必要はありません。すべてがすでにNode.jsストリームにあります。
短所:
-
弱いドキュメントはすでに改善されており、例もありません。 たとえば、Rxまたはベーコンに登る必要があります-これに我慢してください。 - 多くのプリミティブがありません。 あなたの手で実装するのが難しいというわけではありませんが、それでもです。 例.intervalおよび.combineLatest;
- 非常に主観的:leg的なコミュニティ-彼らは自分自身を書いて、彼ら自身を幸せにし、彼らは拡大をリードしません。
合計ではなく
妥当な例が不足しているため、これらすべてのライブラリ、Rx *を確認する必要があります。 私見、最も正しいハイランド-それを書いた人々は、プラットフォームのイディオムを理解し、それを愛しています。 最も「成熟した」RxJS-それはAngularに「カット」されていたが、誇大宣伝されていた。
ヒント: StackOverflowで何かを尋ねる必要がある場合は、RxJS-「方言」をすぐに翻訳してください。