Functional reactive HTTP middleware framework built on top of Node.js platform, TypeScript and RxJS library.
If you don't have any experience with functional reactive programming, we strongly recommend to gain some basic overview first with ReactiveX intro or with The introduction to Reactive Programming you've been missing written by @andrestaltz.
If we think closely how typical HTTP API works we can quickly recognize that it deals with streams of asynchronous events also called as HTTP requests. Describing it very briefly - typically each request needs to be transformed into response that goes back to the client (which is our event initiator) using custom middlewares or designated endpoints. In reactive programming world, all those core concepts we can translate into very simple marble diagram:
In this world everything is a stream. The core concept of Marble.js is based on the event flow of marble diagrams which are used to visually express time based behavior of HTTP streams. Ok, but why the heck we need those observables
? Trends come and go, but asynchronously nature of JavaScript and Node.js platform constantly evolves. With reactive manner we can deliver complex features faster by providing the ability to compose complex tasks with ease and with less amount of code. If you have ever worked with libraries like Redux Observable, @ngrx/effects or other libraries that leverages functional reactive paradigm, you will feel like at home. Still there? So lets get started!
For the latest updates, documentation, change log, and release information visit marblejs.com and follow @marble_js on Twitter.
To view the example project structure, clone the Marble.js repository and install the dependencies:
$ git clone git://github.com/marblejs/marble.git
$ cd marble
$ npm i
$ cd example
To run example just execute following command inside root repository folder:
$ npm run start
Marble.js is not yet a final and production ready product. Its APIs can improve over time when reaching stable version 1.0.0
. But in the meantime you can play easily and contribute to the growing community of functional reactive programming freaks.
Józef Flakus contact: [email protected] twitter: @jozflakus |
Sebastian Musial |
Patryk Domałeczny |
Lúcio Rubens |
marble.js is MIT licensed