Node.js is an event-based, non-blocking, asynchronous I/O runtime that uses Google's V8 JavaScript engine and libuv library. It is used for developing applications that make heavy use of the ability to run JavaScript both on the client as well as on the server side and therefore benefit from the re-usability of code and the lack of context switching.
Node.js is an event-based, non-blocking, asynchronous I/O (input/output) runtime that uses Google's V8 JavaScript Engine.
node.js, commonly just called Node, is often used for developing applications that rely on the ability to run javascript both on the client and server side. Running the same language on both the client and the server benefits from improved code reusability and less context switching.
A notable feature of node.js is that it is non-blocking – if one task stalls or pauses for an I/O operation, another can take over while idle. This allows for high efficiency as the program as a whole never has to idle and wait for one task to finish. Libraries such as async
take advantage of this capability. More information can be found here.
It's also possible to use mature JavaScript frameworks like YUI and jQuery for server-side DOM manipulation in node.js.
To ease the development of complex JavaScript further, Node.js supports the CommonJS standard that allows for modularized development and the distribution of software in packages via the Node Package Manager (NPM).
Download node.js:
Applications that can be written using Node.js include, but are not limited to:
- Static file servers
- Web Application frameworks
- Messaging middleware
- Servers for HTML5 multi player games, or streaming audio/video
- Real time applications
- Cross-platform programs
When asking questions about Node.js, you should:
- Make sure to check the official API documentation before asking, your question might be trivial.
- Isolate the problem and reproduce it with as little code as possible.
- If the question has nothing to do with anything that's node.js specific, please consider asking it as a javascript question instead.
- Mention which version of Node.js you are running. When in doubt, use
node -v
ornode --version
. - Make sure to only use the node.js tag, since node is ambiguous.
Interesting Questions and Answers
Useful Links
- Official API documentation
- Official GitHub Account
- Official GitHub Account (node-v0.x-archive)
- Installation Without Sudo
- Installing Node.js (howtonode.org)
- Debugging Node.js with node-inspector
- #node.js IRC channel for getting help
- Wikipedia Page
Tutorials, Guides and Books
- Node Tuts (Video Tutorials)
- Node Beginner
- Node.js app using Windows Azure
- Node Manual (One source for API, Node.js Guide and Mozilla's JavaScript reference. Code examples run in Cloud 9 IDE)
- NodeCasts (Free screencasts)
- Getting Started with Node.js on Heroku
- Error Handling in Node.js
- NodeSchool.io
- Stream Handbook (How to write node programs with streams)
- Pirple - The Node.js Master Class
- Learn Node
- NodeJS Best Practices
Talks, Presentations, and Podcasts on Node.js
- Interview with Ryan Dahl @ QCon San Francisco 2010 (Nov 2010)
- JavaScript on the Server @ GoogleTechTalks (July 2010)
- NodeUp: A Node.js Podcast
- NodeConf 2015
Free Node.js Books and Resources
- Node: Up and Running
- Mixu's Node Book
- Javascript and Node Fundamentals
- Node Weekly
- Eloquent JavaScript
Chat Room & Mailing list
- Chat about Node.js with other Stack Overflow users here
- Mailing List
Logging
- pino - Extremely fast logger inspired by Bunyan.
- winston - Multi-transport async logging library.
- console-log-level - The most simple logger imaginable with support for - log levels and custom prefixes.
- storyboard - End-to-end, hierarchical, real-time, colorful logs and stories.
- signale - Hackable console logger with beautiful output.
Official logo
Node.js is copyrighted by the openJS Foundation