The PhosphorJS Project
The PhosphorJS libraries cover topics including (but not limited to): message passing, signaling, attached properties, data structures, widgets, and layouts. Each of the libraries is a separately installable NPM package. Developers are free to use as much or as little of PhosphorJS as suits their needs.
Most users will be drawn to PhosphorJS for its high performance layouts and well structured widget hierarchy. These features allow a developer to build desktop-like experiences which are not possible using CSS alone, and which are not within the purview of most of today's web frameworks.
- PhosphorJS provides a simple and flexible Widget class which establishes a hierarchy for message passing and DOM node manipulation. This enables the propagation of various messages throughout the hierarchy, such as: resize, attach, detach, show, and hide (among many others).
- PhosphorJS recognizes that CSS is good at lots of things, and does not prevent the developer from using it when appropriate. PhosphorJS layouts play nicely with standard CSS layouts, and the two can be freely mixed within a widget hierarchy.
- PhosphorJS recognizes that developers have favorite frameworks that are well suited to a particular task. A Phosphor Widget instance can play host to DOM content generated by any other framework, and such a widget can be freely embedded within any Phosphor widget hierarchy.
- PhosphorJS provides a host of predefined widgets and layouts which are hard to implement correctly and efficiently, such as: menus and menu bars, split panels, and tabbed and docked panels. These make it simple to create the rich desktop-style applications described previously.
Can I use it now?
PhosphorJS is under development at the moment. Many of the libraries listed on the documentation page have already reached 1.0, and others (several unlisted) are in the process of being released.