Some of us are already familiar with Node.js and for some others, it is probably "another new development tool/language/standard that is getting popular but what the heck..".

Node.js is really getting popular + being used more and more each day and it deserves this attention with the flexibility and performance if offers.

What is Node.js?

In a single definition: Node.js is a server-side JavaScript environment that uses an asynchronous event-driven model.

JavaScript is mostly ran/rendered on the client-side, in the browsers. However, Node.js is a server-side JavaScript interpreter and allows us to handle and make requests via JavaScript.

Node.js Logo

It is so fast as the engine is powered by the Google's V8 JavaScript Engine, runs under a single thread and every I/O operation is asynchronous which means no waiting for I/O operations of other requests.

A Node.js application can handle thousands of concurrent connections with minimum resource usage

Also, the ability to share code between the server and client-side is another plus. For ex: you can easily run the same form validation code on both sides.

It is not alone in the world of server-side JavaScript as there are other solutions like Aptana Jaxer, Ringo, Narwhal or EJScript. And, running JavaScript in the server is not something new as well considering classic ASP with IIS can do that too. But, things running asynchronously changes many things.

How to learn Node.js?

There are already a good number of tutorials and (e)books on Node.js. Here are some great ones to start with:

There are many modules and resources to easily get going with Node.js. Also, some great open source applications built with it. Here they are:

 

Node Development


npm (Node Package Manager)

Node Package Manager

The popular package manager for Node.js which can be used for installing and publishing Node programs.

Also, it can manage dependencies and the website has a package-search-engine.

Socketbug

Socketbug Nodejs

A remote debugging tool built with Node.js and Socket.io which enables your mobile application to send/receive messages from other connected devices (mostly mobile in this case) to your desktop browser.

P.S. It was previously mentioned at WRD.

Socket.IO

Socket.IO For NodeJS

Socket.IO brings WebSockets real-time communications to every browser whether they support it or not.

It has several transport methods like WebSockets, Adobe® Flash® Socket or JSONP Polling and the best method for the client's browser is selected automatically.

Faye

Faye Node.js

A set of tools for so easy publish-subscribe messaging between web clients.

It comes with easy-to-use message routing servers for Node.js + Rack applications and clients that can be used on the server + in the browser.

pubsub.io

pubsub.io

Pubsub.io adds the interface of a database to a publish subscribe system.

You subscribe to queries, can preform select statement and even control the frequency of datas.

PDFKit

PDFKit

A PDF document generation library for NodeJS for creating basic-to-complex PDF files.

With a chainable API, complicated documents can be generated with only a few lines of code and it has support for vector graphics, images and custom fonts besides text.

Nodemailer

E-mail Module for NodeJS

A flexible NodeJS module for sending e-mails using SMTP or sendmail.

It can send attachments, embedded images, HTML with plain alternatives and has unicode support.

Zombie.js

Zombie.js

A lightweight framework for testing client-side JS code in a simulated environment.

Kue

Kue

A feature rich priority job queue for Node.js backed by Redis.

It has a plain and clean user-interface for viewing and managing queued, active, failed, and completed jobs.

ldapjs

ldapjs for Node.js

A pure JavaScript framework for implementing LDAP clients and servers in Node.js.

It can accomplish most of the features of LDAP v3 RFC(s) and compatible with the protocol and OpenLDAP.

riak-js

riak-js

Node.js Riak client with support for HTTP and Protocol Buffers.

Node.js MySQL Database Bindings

Node.js MySQL Driver

A set of Node.js bindings for MySQL and Drizzle.

You can build manual SQL queries, or use the wrapper methods that include auto-escaping

Redback

Redback - Redis for NodeJS

A fast, high-level Redis library for Node.JS that exposes an accessible and extensible interface to the Redis data types.

Redback comes bundled with advanced Redis structures such as the Social Graph, Full Text Index, or Rate Limiter. You can also build your own Redis-backed structures with ease.

 

Node.js Frameworks


Flatiron

Flatiron NodeJS

Flatiron comes with simple to use yet full featured components and lets developers add/remove what they want.

The components include routing, templating, middleware/request handling and more.

Express

Express for NodeJS

A fast and flexible web development framework for NodeJS that is inspired from Sinatra.

It comes with routing, redirection helpers, dynamic view helpers, content negotiation and much more.

Geddy

Geddy - NodeJS Framework

Geddy is a modular and complete web framework for Node.js. It eases serving  RESTful resources in any format (HTML, JSON or XML).

It also handles EJS templating, with recursive partials support.

RailwayJS

RailwayJS

It is a Node.JS MVC framework based on ExpressJS and allows building web applications in a similar manner as in Ruby On Rails.

RailwayJS has resource-based routing, JugglingDB ORM, Coffee-script support and more.

SocketStream

SocketStream

SocketStream is a new full stack web framework and distributed hosting platform built around the Single-page Application paradigm.

It uses HTML5 WebSockets, Socket.IO, Redis and other techologies for providing a responsive experience for the web.

Vows

Vows

This is a behavior driven development framework for Node.js for testing asynchronous code.

It executes the tests in parallel when needed and sequentially when there are dependencies.

NodeQuery

NodeQuery

NodeQuery allows us to invoke jQuery API calls on the server and receive callbacks from the browser in real-time.

Simply, we can work with any DOM (to the extent that jQuery can) without having to serve up any client side JavaScript beyond jQuery and NodeQuery.

Bricks.js

Bricks.js - NodeJS

This is an an advanced modular web framework built on Node.js.

It can be used as a standalone static webserver, a basic routing framework, a multi-level apache-like routing system, as well as being modular enough to have the capability to completely switch out its routing engine.

Stylus

Stylus For Nodejs

Stylus is a robust language that provides an efficient, dynamic and expressive way to generate CSS.

It has support for mixins, variables, conditionals, built-in functions and much more.

Jade

Jade - Node.js Template Engine

A template engine that is inspired from Haml, has very nice readability and flexible indentation.

It has support for mixins, static includes and (optional) memory caching.

 

Open Source Node.js Apps


Hummingbird

Hummingbird

A statistics application that displays user activities on a website, like pageviews or custom events in real-time.

It works with the help of a tracking pixel and makes use of websockets besides Node.js.

Cube

Cube NodeJS

Cube is a system for visualizing data of time series. It is built with NodeJS, , MongoDB and D3.

It has support for filtering events where events are sent to Cube in JSON.

Calipso

Calipso - NodeJS CMS

A CMS application built with Node.js that is based on Express, Connect & Mongoose.

It is made up of modules which are loaded asynchronously (with the nature of Node.js).

There is an integrated scheduler and feed module that allows pulling any content + any module can expose restful endpoints which makes it easier to build your own API.

Log.io

Log.io - Node.js Log Viewer

Log.io is a Node.js and Socket.io-powered log viewer which can display logs from multiple sources in real-time.

HUBOT

HUBOT

HUBOT is a bot written by the GitHub team to automatically handle regular tasks like posting images, translating languages, integrating with Google Maps, displaying Uptime Robot stats or any other custom task.

Cloud9 IDE

Cloud9 IDE

A full-featured web-based IDE which is mostly focused on JavaScript development.

It has syntax highlighting, an integrated debugger for Node.js and can be extended with plugins.

nide

nide - Node.js IDE

A web-based IDE built with Node.js that can display project files in a filetree, allows creating/deleting/renaming files and syntax highlighting.

It integrates with NPM and has an built-in Node.js documentation.

Twich

Twich NodeJS Chat

A NodeJS and PHP-powered chat application that has support for multiple rooms.

Its repository can be found here.

Vogue

Vogue For Node.js

Vogue is a very useful and tiny web server that watches CSS files of web pages opened through it and tells browsers to reload the stylesheet once it is updated.

Simply, no more refreshes during CSS updates.

Haraka

Haraka - NodeJS Mail Server

An event-driven e-mail server that supports can work as inbound and outbound.

It has various plugins for integrating with spam preventing algorithms, DNS blacklists and more.

 

Others

There are many other useful modules and tools for Node.js like:

And, these are not all as well. It is almost possible to find a resource on "everything Node.js" today.

So, don't fear that you can get stuck using Node.js on a project because there are not enough resources, tutorials or an active community. All of them exists out there.. and growing fast.

WebResourcesDepot Feed