Immview 2 
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
.
TypeScript
Immview has been built with TypeScript.
You do not have to use it, but some editors may offer better experience.
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
For 1.x versions
Compatibility
Not compatible unless: