Fun Links 2015-11-13

Another themed group of links, this time, Reactive Programming libraries for JavaScript. As the reactive programming paradigm catches on, there are libraries popping up in many languages and JavaScript is no different. Sometimes referred to as Functional Reactive Programming (FRP), the idea is that streams of events or dynamic values represent the data within your application. You can then transform, combine, filter and perform a host of other operations on these streams. Each library has slightly different syntax and names for certain things, but conceptually they are all trying to do the same thing.

It is something that makes more sense when you see examples, and even then, it may not be apparent what the value is. But if you let it sit in the back of your mind for a while, you can appreciate the value and power the concept brings to the table.

If that isn’t enough to convince you, I’ll also mention that as of the time of this writing, it is intended that Angular 2 will use these observables–as they are known–for the results of Ajax calls.

From the Reactive Extensions family of libraries, including a Rx.NET, comes the enterprise friendly RxJS. From what I can tell this is the version that is most popular with enterprise projects. It is quite comprehensive, and if desired, you can pull in only the features that you need. RxJS is the library that Angular 2 will be bundling as far as I know.

What can go wrong with a library with the name bacon? This library seems to be more popular with the open source community than RxJS, perhaps because it is a bit more light-weight. This library splits the concept of Observables (from RxJS) into EventStreams and Properties.

Another reactive library, this one focused on performance and memory footprint. The feature set seems quite comprehensive, and the documentation is good, although it has fewer practical examples than others. What is lacks in practical examples I feel it makes up for with conceptual examples and illustrations that help explain how the different functions work. For what it is worth, Kefir is the library that I’m planning to use in my next personal project.