Skip to content
This repository was archived by the owner on Dec 20, 2023. It is now read-only.

Latest commit

 

History

History
113 lines (82 loc) · 3.91 KB

modules.md

File metadata and controls

113 lines (82 loc) · 3.91 KB

Modules We Use

Here is a rundown of some of the modules we love and use.

Gulp is a build tool like grunt or broccoli, or Make and scons if you don't usually work with JS. Gulp is different from other JS tools in that it is streams centric and just javascript. Unlike grunt, you don't have massive config objects you must conform to; it takes a code over configuration approach much like Make. If you're interested in learning more, here is a very detailed example.

Jade is our templating language of choice. Jade is great because:

  • light enough to use on the client via browserify
  • robust enough to use on the server (e.g. support for layouts and blocks)
  • whitespace significant -> no "I forgot to close a tag" bugs
  • no clumsy separation and helper assignment like handlebars (<3 mixins!)

CSS is compiled from LESS files, which is great because:

  • Use real variables
  • File imports
  • Declarative property nesting
  • Source map support
  • Composable with other modules

Javascript is compiled by browserify which works kind of like this:

  • given an entry point like ui/app/index.js
  • follows the dependency graph opened from the entry point
  • resolve dependencies from node_modules/
  • puts all sources in one file
  • each file of the graph in its own closure/scope

browserify is a huge win because we can write our client side code exactly like our server code (minimized context switching cost) and easily reuse modules between the server, the ui and other teams (check out the mongodb.js keyword on npm).

For more details, here are some slides from a talk @ Mongodb on npm and browserify.

Highly modular, loosely coupled, non-frameworky framework for building advanced JavaScript apps that is an evolution of Backbone.js that maximizes simplicity:

  • Everything is a CommonJS module.
  • Everything is installed via npm.
  • Everything is MIT licensed.
  • Trusted versioning with semver.
  • Modern browsers by default; unapologetically supporting only IE9+.
  • The browser is a runtime, not a document viewer.

JSHint is a program that flags suspicious usage in programs written in JavaScript. The core project consists of a library itself as well as a CLI program distributed as a Node module.

For formatting, searching, and rewriting JavaScript. Analogous to gofmt.

Define your own hygienic macros of languages like Scheme and Rust in your modules to spend less time on the keyboard.

Express is a minimal and flexible Node.js web application framework that provides a robust set of features for web and mobile applications.

A simple and ubiquitous test runner for JS on any platform.

An amazingly easy way to test your javascript in browsers. Start testing your code in seconds locally and move to cloud based browsers seamlessly for better coverage.