Types of Module
A number of primary types of module exist within the software:
Exist on the ips.utils namespace, and provide assorted functionality that other modules can make use of, including cookie handling and methods for handling responsive design.
UI widget modules
Exist on the ips.ui namespace, and define interface widgets to add interactivity to pages, and which can be reused using special data attributes.
Controllers are modules that handle specific functionality for one particular page or part of a page. They respond to events from UI widgets and other controllers and update their scope accordingly.
Mixins are used to extend controllers with additional functionality.
There are a number of other types of non-modularized file used too:
Libraries are 3rd party scripts that provide additional functionality. jQuery and Underscore are two examples.
Template files define special Mustache templates, that modules can use when rendering HTML to the browser.
Language files define strings which can be translated into other languages.