
Immview is a library to create Domain
s - non-visual components
- similar to flux stores, exposing their state or emitting signals
through
Observable
s pushing values and having specific to their concerns actions.
Their primary role is to encapsulate a concern
and to be the only thing exported from a javascript module or modules
that deal with the concern.
It completely replaces any flux implementation or Redux.
All Domain
s must be provided with a single stream of values
(so either Origin
or any other transformed Observable
),
but not all Observable
s must be attached to a Domain
- you can perform many transformations on a source
before it is exposed through a
Domain
.
For RxJS users
If you are familiar with RxJS 5, an Immview taste of Observable
does not have a different meaning or role, although behaviour differs and is more similar to RxJS's Subject
Also, just as RxJS 5, it mimics TC39 Observable proposal interface.
Quick overview
const Foos = new Observable()
const FooSenderDomain = Domain.create(Foos, {
send() {
Foos.next('foo')
}
})
FooSenderDomain.subscribe(v => console.log(v))
FooSenderDomain.map(v => v + 'bar').subscribe(v => console.log(v))
FooSenderDomain.send()
Installation
Immview is registered on NPM.
npm i immview --save
Presentation
If you are using React to create presentation layer of your app you should check immview-react-connect
Read more
Compatibility
Not compatible with IE8 unless:
- Array.prototype.filter is polyfilled
2.0 Roadmap