The Awesome Node.js And Its Gang
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?
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.
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:
- The official Node.js documentation
- Mastering Node (an open source e-book)
- The Node Beginner Book (an open source e-book)
- Up and Running with NodeJS (an open source e-book)
- Felix's Node.js Guide (a detailed guide)
- How To Node (a blog on Node.js)
- Node Tuts (podcasts on Node.js)
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:
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.
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 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.
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 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.
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.
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.
A lightweight framework for testing client-side JS code in a simulated environment.
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.
It can accomplish most of the features of LDAP v3 RFC(s) and compatible with the protocol and OpenLDAP.
Node.js Riak client with support for HTTP and Protocol Buffers.
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
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.
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.
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 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.
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 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.
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 allows us to invoke jQuery API calls on the server and receive callbacks from the browser in real-time.
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 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.
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
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 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.
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 is a Node.js and Socket.io-powered log viewer which can display logs from multiple sources in real-time.
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.
It has syntax highlighting, an integrated debugger for Node.js and can be extended with plugins.
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.
A NodeJS and PHP-powered chat application that has support for multiple rooms.
Its repository can be found here.
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.
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.
There are many other useful modules and tools for Node.js like:
- XMPP.js – for connecting to an XMPP server as a component.
- Node DB MySQL – MySQL database bindings for Node.js.
- Paynode – for payment system integration
- Node-Sound – a sound library for Node.js
- Node-Boilerplate – everything to get started on a Node.js website with express and socket.IO
- Node.js Help Sheet
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.