- Node.js is an open-source, cross-platform Javascript runtime environment built on Chrome's V8 Javascript engine.
- Node.js has an event-driven architecture capable of asynchronous I/O (Non Blocking I/O).
- Node.js enables Javascript to run anywhere (servers, desktops, embedded systems etc), not just in the browser.
- Node.js can be used to create servers, web apps, command line tools and many more.
- Node.js is maintained by OpenJS Foundation.
- Before Node.js, most servers relied on blocking I/O (like Apache Http Server).
- The goal was to create a server that utilizes Non-Blocking I/O.
2009
- Node.js was developed by
Ryan Dahl
in 2009. - Initially SpiderMonkey was chosen as the Javascript engine, but it was soon replaced with V8.
- At that time,
Joyent
was working on a similar project and invited Ryan Dahl to join their company and develop Node.js. - Node.js was initially named as
Web.js
, reflecting its use for creating web servers. It was later renamed toNode.js
.
2010
- NPM was developed by Isaac Schlueter in 2010.
2011
- Windows support was added. Previously, it only supported linux and macos.
- Joyent + Microsoft together developed the windows version.
2012
- Ryan Dahl stepped away from the Node.js project, and Isaac Schlueter took over as the project lead.
2014
- io.js was introduced which was a fork of Node.js.
- io.js was created with the intention to accelerate the development and predicted releases of code under an
open governance model
. Since Node.js was governed by Joyent, io.js was created as an alternative.
2015
- The
Node.js foundation
was established as an independent entity to over see the development and releases of Node.js. - Node.js foundation combined the releases of Node.js and io.js into a single code base.
2019
- JS Foundation and Node.js foundation merged together to form OpenJS Foundation.
(GIST)
- NPM is the standard
package manager
for Node.js. - It started as a way to download and manage dependencies for Node.js.
- Yarn, pnpm are alternatives to
npm cli
. - NPM manages dependencies using the
package.json
&package-lock.json
files.
(GIST)
- Blocking I/O is an I/O operation that prevents the execution of the program from proceeding until the operation is complete (i.e., the CPU remains idle until the I/O operation finishes).
- Non-Blocking I/O allows a program to continue executing other tasks while the I/O operation is in progress, rather than waiting for it to complete.
Back to index | NEXT: Chapter 02 - JS on Server |