14 Web Application Frameworks for Node.js

Yes, this is the 2nd edition to my list of Node.js frameworks, the first one was where I had put together a list of seven Minimal Node.js Frameworks, which later turned into one of my most visited, shared and admired posts on this blog. If you were a part of the success, thank you and hopefully we can make this one just as good.

I have since received a ton of emails, comments and social media queries with suggestions, and questions as to what else is out there. It started to become very hard to keep up after a while, and I’ve decided to publish another post with a list of ten twelve (since update) web application frameworks, that are either not minimal, or haven’t been mentioned in the first edition.

I’m gathering these up by paying attention to their usage / popularity on open-source websites like GitHub and Bitbucket, while also keeping an eye on sites like Hacker News, and Reddit. It’s not easy finding something that many people at once like to use and vouch for, I have tried my best, and as with any post that comes in this form: you’re encouraged to submit your own links.

Hello World! Node.js Development Workflow

Remember the silly ‘Hello World!’ I published on the first edition? Well, I’ve got something better for you this time around. It’s a webinar recording, where Adron Hall goes through the very basics of getting up and running a Node.js web application, using the Express framework.

You can either watch it to refresh your memory, introduce yourself to WebStorm (IDE), perhaps even begin learning about Node.js and the basics of it, or you can simply move on.

I’m totally transparent when it comes to writing descriptions, or examples for these frameworks, and you’re more than welcome to voice your opinion, in any way you like. At the time of writing this post, I’m more focused on bringing these frameworks to light, than I am on writing / producing full-scale tutorials for them.

I think that’s about everything I wanted to say, and like I said, you’re being encouraged to share your own links, to help out other community members with their learning curve, or simply to deliver extra value to the already valuable post.

Is Node.js Good or Bad?

I didn’t initially intend to mention this, but I recently submitted a post to the Reddit’s r/programming subreddit, which was basically an introductory guide for Node.js, with some examples and advice for beginners, it turned out that the six month old post that I submitted sparked some intense discussion and debate, about the current situation and the future of Node.js, I recommend heading over to the thread right now, to learn more about Node, and also the community behind it.

It’s quite obvious that JavaScript is changing, and enabling developers to access much higher grounds than it was possible just a few years ago, but is it – also a reason for a lot of the community members to take single approach to everything, avoiding innovation and depending on platforms like Node.js, just a little bit too much?

What do you think?

14 Web Application Frameworks for Node.js

That’s quite an introduction, but that’s what it takes for posts that are useful for longer than the time it takes to read through them.

begin UPDATE 20/03/2014

I had to remove Socket.IO from the list as there seem to be a lot of difficulties with it, some of which make working with this framework unbearable. I’ve since removed it from the list, and added ‘Primus’ as an alternative!

end UPDATE 20/03/2014

socket.io

Socket is great for building real-time (push) applications, and it’s extremely easy to understand, learn to work with. It’s essentially hoping to be go-to application when it comes to building apps that require constant updates, without having the user to refresh the page. Gambling websites, totalizators, even real-time admin panels / dashboards come to mind as good examples to use Socket for. Any others?

Primus, the creator god of transformers but now also known as universal wrapper for real-time frameworks. There are a lot of real-time frameworks available for Node.js and they all have different opinions on how real-time should be done. Primus provides a common low level interface to communicate in real-time using various of real-time frameworks.

You’ll find the full feature list, and the key advantages to using Primus on the official GitHub page. I can maybe get Miroslav (the guy who recommended Primus) to get in here and leave a comment on the basics of Primus.

Geddy is one of the oldest MVC frameworks on this list, and has been around since the days of Node.js itself. It’s quite similar to Rails when it comes to code generators, one way to learn more about Geddy is by subscribing to – now discontinued – Matt’s blog: Fleegix. The blog itself is an Geddy application, but there is some good info on how the framework works and what it does.

For those who’re just starting out and know of OpenShift hosting platform, I recommend reading this tutorial on how to get started with Geddy, a couple of tiny examples in the post as well.

Locomotive is a web framework for Node.js. Instilled with familiar MVC patterns and a conventional file layout, Locomotive builds on Express to provide an organized structure for routes and controllers while integrating seamlessly with any database and template engine. The result is beautiful code and faster development.

It’s being used in my applications, and a number of other developers have adopted it as well. The current feature set is reliable, and completely covered by unit tests. Ease of use is sufficient (especially if you have a Rails background), and is constantly improving. I’m not going to make any proclamations about maturity, because I think both it and the Node ecosystem are evolving too rapidly at this point.
[…]

KeystoneJS was built to help developers build web applications that are database driven, it’s built on Express (Go-to framework when it comes to hybrid web applications!) / Mongoose (Great framework for asynchronous development!), and gives you the required edge when it comes to building web apps. It’s known for being reliable when it comes to building commercial web applications, and putting them in production mode.

You can expect to work with tools and modules that will enable you to take away the difficult parts of building routes, sessions, models, etc,. etc,. It also comes integrated with an admin dashboard, which is automatically produced when you begin work with the mongoose models.

The best way to learn about something is of course doing, so head over to the KeystoneJS Demo page to learn much more about this lovely framework.

5. Grasshopper

Grasshopper is a feature-rich and flexible web application framework for node.js with support for most of the features web applications would need. I’m quite limited with resources when it comes to writing more about this framework, and I’d be thankful if someone from the community could jump in with a brief description. I was able to find one good example of this framework in action, building a shoutbox with Grasshopper.

6. DozerJS

It’s not a framework, not a toolkit, rather Dozer aims to be a malleable and unopinionated foundation for developing RESTful API’s and web services to support front-end development. So, the lesson here is that it’s meant for building RESTful based apps, and might not seem like it its under web app framework list, but it’s actually one of the best alternatives for that particular problem, and so I decided to keep it.

Here are two posts worth taking a look at to learn more about the basic syntax / functionality of DozerJS:
• Getting Started with DozerJS
• Simple Todo List App with DozerJS

The closest place this framework comes to being called chocolate is on it’s demo page, quite nice design and shows great examples of what this Coffescript based framework can do. Chocolate is a simple webapp framework built on Node.js using Coffeescript. I recommend reading this interview post for full introduction to this framework, combined with the demo page there is no more explanation necessary.

8. DataChannel.IO

Datachannel.io is inspired by the amazing socket.io framework and implements a real-time communication using the WebRTC technology. Peers are directly connected and datas are exchanged between clients without passing throug the server. I’ve already mentioned socket.io at the beginning of the post. DataChannel is another great framework to work with, if you’re in need to access real-time data, all the time, without any hiccups.

StrongLoop is an API server, built on Node, for Node. It’s most famous for it’s in-house product, called StrongOps. It used to be called ‘Nodefly’, if that at all rings any bells. I recommend heading straight over to the GitHub page of StrongLoop, and immersing yourself in the ridiculous amounts of libraries, modules and frameworks.

10. UglifyJS

We can start wrapping up our post, but before we do, we surely need something to help us compress all of our code, to make it more beautiful, and why not do it through an minifier that’s built on Node.js? UglifyJS is a Node.js library / module for those who want to increase the speed efficiency of their code, and so provides all of the necessary tools and an extensive documentation to help you cope.

The Derby MVC framework makes it easy to write realtime, collaborative applications that run in both Node.js and browsers. Derby includes a powerful data synchronization engine called Racer. While it works differently, Racer is to Derby somewhat like ActiveRecord is to Rails. Racer automatically syncs data between browsers, servers, and a database. Models subscribe to changes on specific objects and queries, enabling granular control of data propagation without defining channels. Racer supports conflict resolution out of the box, which greatly simplifies writing multi-user applications.
In order to help you get started, here are two extremely useful guides / tutorials for Derby development.
• Node.js MVC: Express.js + Derby.js Hello World Tutorial
• Developing with Derby JS – Installation

This was another community suggestion which I’ve now added to the list of resources. It adds up to the total number of frameworks featured, but Sebastian Lasse left a good comment on it, and I think it has some purpose for those who’re looking to build high quality web / mobile applications.

I think the part of the problem is that most people think, dojo is a client side toolkit. This might be due to the AMD loader nature of dojo. But, if you use it “allover” you’ll have a solid and understandable codebase (just wrote about 80.000 modular lines). Basically, the dojo/node module will require your node modules async. like every other dojo module or your own modules. However, I forget to mention the tutorial “behind” the boilerplate:http://dojotoolkit.org/documentation/tutorials/1.10/node/index.html
(one of 70(!) nice dojo tutorials)

CompoundJS is built on top of Express, and is looking to be a promising framework for those who want to develop and accelerate their web applications. Compound’s formula is Express + structure + extensions.

Where structure is the standard layout of directories, and extensions are node modules adding functionality to the framework. Compound’s goal is to provide an obvious and well-organized interface for express compatible application development. This means that everything that works with express will work with compound.

Start with the crash course, and then move forward to the rest of the tutorials, if you find it at all appealing.

This was another suggestion from a community member, and I’m surprised I missed it, during my initial search for good web application frameworks. I’ve learned that KO.js is amazing for building responsive and feature rich applications, which will scale and perform incredibly well.

It also appears to be a huge time saving machine, mostly due to the fact that you can build complex data models, and automatically update the development user interface, enabling you to save a lot of time on that end.

By encapsulating data and behavior into a view model, you get a clean, extensible foundation on which to build sophisticated UIs without getting lost in a tangle of event handlers and manual DOM updates.

Conclusion: –
It’s finally a wrap, I do agree that the end of the post started to drag a little bit, but I’ve juggled around quite a bit to find the bits and pieces of info that I’ve included in this lovely roundup. I’m already planning future editions, and if there is something in particular you’d like to see, please let me know in the comment section.

The content written by this author is still frequently updated, but due to some changes in the past, all new content published by this author is being done so under a new username. By the way -- smile, you're beautiful! (:

Interesting, it’s not the first time I hear about a sort of suspicion from node developer towards Meteor (which I think it’s awesome). Why?
Does it appears as a wrapper that steals from you control on what you are doing? (If yes, it does NOT!)

I am using total.js on heavily for a js project (+ Angular and Cassandra). and I should say it is really a full fledged MVC framwwork for node.js with lots of features including template rendering, websockets, uploads, sessions, mailer and many more.