What are node.js and the AMD API used for?

Problem

I have some experience with JavaScript but none whatsoever with JavaScript project management and tooling. I'm looking at using node and AMD but am not exactly sure what they are used for and am having trouble wading through the documentation.

Here are some of the specific points I'm stuck on:

Node

  • my impression is that it's intended for server-side JavaScript. Can it also do builds for client-side projects?
  • if it can do builds, can it build projects (+ dependencies) into a single file for client-side deployment?
  • can its build process integrate tools like jslint and grunt?

AMD

  • is it a problem that it apparently doesn't play nice with other tools? (not trying to sling mud here, just don't really understand the context of this issue)
  • where does AMD run -- in the web browser? If so, does that mean I need another tool to deal with actually getting and managing the 3rd-party libraries, running jslint, running tests, and building the project?
Problem courtesy of: Matt Fenwick

Solution

These projects aren't related.

node.js is a JavaScript interpreter just like a web browser. It's a server technology and can't run on a client. Specifically it is a wrapper set of libraries that add IO support, to file or network, so that you can read from disk or respond to TCP (and therefore TCP/IP aka HTTP(S) or FTP) requests. Otherwise, it's just javascript like you would write in the browser. You can use it to run script from the command line or build a web server.

It can be used to "build" projects from the command line since it's able to be used like a scripting language in a shell environment (it even responds to #! command routing).

AMD is a tool to manage dependencies for JavaScript projects. You can use it load dependencies dynamically and even asynchronously (hence the name). AMD will work in the browser and in node.js (but node.js already includes a technology to load JavaScript dynamically, so it won't be really useful).

Solution courtesy of: Aaron Digulla

Discussion

There is currently no discussion for this recipe.

This recipe can be found in it's original form on Stack Over Flow.