D3: manipulating and visualizing documents based on data.
JQuery: simplifies HTML document traversing, event handling, animating, and Ajax interactions.
JQuery-UI: abstractions for low-level interaction and animation, advanced effects and high-level, themeable widgets, built on top of the jQuery
sizzle: CSS selector engine designed to be easily dropped in to a host library.
Codemirror2: in-browser code editor.
science.js: scientific and statistical computing methods.
dsp.js: digital signal processing methods including functions for signal analysis and generation, Oscillators(sine, saw, square, triangle), Window functions (Hann, Hamming, etc), Envelopes(ADSR), IIR Filters(lowpass, highpass, bandpass, notch), FFT and DFT transforms, Delays, Reverb.
modernizr: detect HTML5 and CSS3 features in browsers.
Lab Example: index.html.haml
uses Modernizer to check if the browser implents SVG and re-direct the user to an upgrade
page if the feature is not presnet.
MathJax is a display engine for mathematics that works in all modern browsers.
Lab Example: lennard-jones-potential.html.haml
uses MathJax to display LaTeX formatted math equations.
OpenSans Font: used for most text display
npm, the Node Package Manager isnow bundled with Node and is used to specify and manage external node pacage dependencies for a project.
More about using npm for development:
- Introduction to npm
- node_modules in git
- Managing module dependencies
- What do people do for versioning node modules within git?
Lab Example: package.json
specifies node pakage dependencies for the Lab project.
RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node.
Lab Example:
All Lab's modules use RequireJS for dependency management and build process. Its application is widely described in this section.
CoffeeScript is a language the compiles to JavaScript. Many programmers find it more expressive and productive. js2cofee can be used to convert JavaScript to CoffeeScript. RequireJS Optimizer also can convert CoffeeScript to JavaScrit. So you don't have to manually do it when referencing CoffeeScript files using RequireJS.
Lab Examples:
get-md2d-data.coffee
is a coffeescript program used to run the MD2D engine from the command line and generate data used for physics validation tests.PlaybackComponentSVG
is an object written in CoffeeScript that creates and manages the SVG-based Playback control widget for the Molecule Container.InteractivesController
is an object written in plain JavaScript which references directly CoffeeScript file using RequireJS (Thermometer = require('cs!common/components/thermometer')
).
This section covers RequireJS support of CoffeeScript files.
Bundler is a Ruby Gem used to express and manage Ruby Gem dependencies.
Lab Example: Gemfile
is used to specify all the Ruby Gem dependencies to build and test the Lab project.
Haml is a Ruby Gem that processes HTML expressed in HAML markup into HTML.
Lab Example: index.html.haml
is used to generate the main index.html
page.
Sass is a Ruby Gem that provides many powerful extensions to CSS3 and works by processing files in either SASS-indented-syntax or SCSS format (a su[erset of standard CSS3) and generating CSS stylesheets.
Lab Examples:
index.sass
is used to generate:index.css
readme.scss
is used to generate:readme.css
Guard is a Ruby Gem that can efficiently watch for changes on the file system and automatically start the build process when needed.
Lab Example: Starting Guard with bin/guard
loads and runs the configuration in Guardfile
.
thor is a Ruby Gem for building self-documenting command line utilities.
Lab Example: cloud.thor
are the
Ruby command-line interface scripts for providing access to the
AwsLabServer
library for creating and managing AWS cloud servers.
fog is a Ruby Gem for working with many different cloud service providers.
Lab Example: AwsLabServer
is a library built on top of fog for creating and managing Lab server instances on AWS.
Vows is an asynchronous behaviour driven testing framework for Node.
Lab Examples:
axis-test.js
is used to test the drag UI logic for interactively re-scaling Graph axes.arrays-test.js
is used to test the utility class for working with regular or Typed Arrays.
livereload is project that has created extensions for Chrome FireFox, and Safari to provide automatic browser reloading when the HTML, CSS and JavaScript files are changed on the server. The older version 1 extensions work with the guard-livereload gem.