Home

Awesome

SimpleStateMachine

State machines are simple yet powerful. This one aims to be as simple as possible. No external dependencies.

Install

bower install SimpleStateMachine
npm install simple-statemachine

Build

To build and view locally, first clone the project and then:

npm install
grunt serve

That will start a server at localhost:1337 and load the examples page.

Usage

See examples folder for usage. The example using Angular has a side-by-side comparison of using SimpleStateMachine vs. not in a pretty typical use-case. See .js file code comments for documentation.

Why?

One of the primary things front end Javascript deals with is setting and managing the state of different objects and exposing that state to the DOM. There's a lot of complexity to this: not all states can be universally reached from all other states, other objects need to be notified when a states has been entered/left, only one state can be "active" at a time, etc. I've found that this complexity can be reduced by using a state machine to manage it. This is because:

This article also explains why state machines should be used.