I continue to receive Flux implementations, which isn't a bad thing because they're adapting at a rapid pace. Flox (GitHub: foss-haas/flox, License: MIT, npm: flox) by Alan Plum is lightweight and seems easy to learn -- the readme has a nice introduction to the architecture.
It's loosely based on Flux, with a pared down pragmatic approach which I like. For example, Flox doesn't provide
waitFor. Instead you should use services, which I thought made sense.
If you're interested in Flox, read through the example in the readme. It also ships with pretty detailed Mocha/SinonJS tests.
Speaking of services, what do you do when you want to easily switch dependencies or configuration values for different environments, like tests? pioc (GitHub: pago/pioc, License: MIT, npm: pioc) by Patrick Gotthardt is a dependency injection container that is aimed at Node but can be used with browsers through Browserify.
pioc's goal is to help you write loosely coupled modules:
pioc is very smart about how and when to initialize your services. It supports constructor injection, property injection, static values and even module inheritance with all the parts that are needed to make it work.
The API allows you to define modules, which are known as service definitions. These services are resolved by providers. Services can be bound as values or lazily evaluated objects. By default objects are treated as singletons, which is the most common usage.
If you're confused by all of this then try to imagine how to handle loose coupling for database modules. If you wanted to switch your database's configuration for the test or staging environments, then DI can help because you can inject different configuration values at runtime. Also, the database module would be treated as a singleton, so you can safely refer to it in multiple places in your project without accidentally creating new instances or connections.
Patrick's example is actually MongoDB, and this works well as a showcase of pioc's features.