Node.js - lucasjwilber/seattle-301d52 GitHub Wiki
What is Node.js?
It is a JavaScript runtime—a program used to run JavaScript. It's basically the Chrome V8 engine (used in the browser) with some additional features, which combined make it possible to use JavaScript as a back end language.
Node.js uses the Node Package Manager (npm), which has over 600,000 JS packages available for download. Downloading a package is simple, just type "npm install [flags] [package name]" in the directory you want to package installed. npm is the reason for many of the files in our labs and projects that we need but don't often work with: node_modules is created by npm to hold any package files and related libraries, and .gitignore is used to prevent node_modules from being pushed to a git repo. But if that repo gets cloned the data in node_modules would still be needed, so package.json lists the npm packages your project requires, and package-lock.json specifies exactly which versions of those packages are required.
Other than the fact that it uses JavaScript, one of the most unique things about Node.js is that it is single-threaded, compared to older languages which create a new thread for each request. This means that code written for Node.js needs to be especially cautious of errors that could crash the thread or cause an I/O block, because they would affect all the other requests being processed by the server at that time.
Unlike other back end tools, Node is very "bare-bones". This makes it harder to get something running out of the box, but the trade off is that your app will hopefully be lighter and faster.