ReactJS Facebook's framework (Instagram its entirely built with it) for writing view components. It's not a complete web framework; it doesn't provide: modules, http, model, route support, dependency injection, etc. It works as follows:
Changes on the the UI performed on a fake DOM (virtual DOM).
In order to render the UI an algorithm identifies the differences between the virtual and real DOM.
Finally the changes are applied to the real DOM in batchs.
The result is that there are less updates (redundant modifications are removed) and they are usually faster (batch DOM updates are faster than individual DOM updates due to the way browsers work).
Props: external interface, immutable from the component. Can be changed from parent components.
State (optional): internal state, private and only changed by the component.
Since state increases complexity and reduces predictability, a component without state is preferable. Even though you clearly can't do without state in an interactive app, you should avoid having too many Stateful Components.
The key points when using React are:
Rebuilding the UI entirely from the data model each time (not incrementally).
Utilizing unidirectional data flow in contrast to the (two way) bindings.
They are enforced in the Flux architecture. Flux Facebook's internally used architecture/pattern for building ReactJS applications (MVC alternative). It's not a framework or even a library (certainly there is small Dispatch library). Their components are:
Actions – helper methods that facilitate passing data to the dispatcher
Dispatcher: receives actions and broadcasts payloads to registered callbacks
Stores: containers for application state & logic that have callbacks registered to the dispatcher
Controller views: React components that grab the state from stores and pass it down via props to child components.
Web development (ReactJS).
Native mobile development on iOS and Android (React Native) including device simulators (fast development cycle!).
Server side development (Hack and server side editing).
Browserify or webpack: so each component can be coded in it's own file.
The exception "com.vividsolutions.jts.io.ParseException: Unknown WKB type 48" typically happens when the PostGIS geometry column is read as raw bytes. It should be cast at the SQL sentence: select ST_AsBinary(geom) as geom ... from ... It can be read as follows:
WKBReader reader = new WKBReader(); Geometry geom = reader.read(rs.getBytes("geom"));