I think the first obvious thing of interest about Node.js is the ability to use the same language on the client and server when developing a web app. The web is already such a hodgepodge of languages and technologies that anything that can be done to reduce the number of languages and promote code reuse is a major help in reducing this complexity. Another great aspect of this is that you don't have to do a lot of type conversion between the client and server. You can use JSON as the serialized format and it's actually the native format on both the client and server.
It cannot be emphasized enough just how fast and lightweight Node.js is. Part of this speed can be attributed to just how crazy optimized the V8 engine is and part can be attributed to the use of asynchronous programming.
Node.js may not have a large standard library, but what it does have is a fantastic package manager. Node.js's package manager, NPM, has a lot of good stuff in it and does a great job of handling versioning and dependencies. NPM has a thriving community of contributors, which is certainly a vote of confidence in Node.js's future. Some Node.js modules I like are:
- Express - web application framework
- Jade - template engine
- Socket.IO - HTML5 WebSocket implementation
- Passport - authentication supporting many different strategies (e.g., Facebook and Twitter)
Node.js isn't just for web serving, you can actually implement any kind of server with it. This makes it a great solution to implement things like WebSockets or servers for games. You can, of course, also just use it as a general purpose scripting language to create command-line tools or anything else.
Node.js has a lot of things going for it and is now my go-to choice for creating web applications. This very blog is a Node.js application (shocking, I know).