When comparing Express.io vs FeathersJS, the Slant community recommends FeathersJS for most people. In the question“What are the best Meteor alternatives for realtime JS apps?” FeathersJS is ranked 5th while Express.io is ranked 6th. The most important reason people chose FeathersJS is:
Feather can sync events happening in two different Node processes or even servers in real-time. For example: an event happens in server A, the user connected to server B is instantly notified of that event. This is done through a central Redis or Mongo collection or through a websocket libraries' clustering library.
Ranked in these QuestionsQuestion Ranking
Pros
Pro Mature
Being built from two of the oldest Node libraries where each of them has had several releases and constant bug fixes and patches means that express.io is a rather mature solution for building realtime web applications.
Pro Large userbase
Express is the most used Node.js web framework and this brings a large number of learning resources, guides, tutorials and many libraries available for it.
Pro Can easily be upgraded from an Expressjs app
Since Express.io is basically just the Express framework + socket.io, it's very easy to upgrade an express app to an express.io app.
First run: npm install express.io
Then swap require('express')
to require('express.io')
and it will run the same as before.
Pro Can sync events between different Node instances
Feather can sync events happening in two different Node processes or even servers in real-time. For example: an event happens in server A, the user connected to server B is instantly notified of that event.
This is done through a central Redis or Mongo collection or through a websocket libraries' clustering library.
Pro Easy REST APIs
Through services, Feathers provides instant CRUD functionality, it also can easily expose a RESTful and real-time API through HTTP/HTTPS and websockets.
Pro Can be integrated in an existing ExpressJS project
Since Feathers itself is built on top of Express (it's a thin wrapper over socket.io, primus and Express) and because of Feathers' highly modular nature, it's very easy to integrate Feathers in an existing Express project.
Pro Plug-in any feature you need
Feathers makes extensive use of modules (which are called Feathers services). These services work like ExpressJS middleware and can be used with app.use('/path', serviceObject)
.
Services help developers keep their applications modular and as minimal as possible, without any unnecessary libraries or bloat.
Pro Support for different socket transports
FeatherJS uses primus which is a universal wrapper for real-time frameworks. Through primus you can easily choose which socket transport you want to use.
Cons
Con Working with relational databases can be a hassle
Not only express, but every Node framework has this problem. While there exist plugins and libraries that allow developers to use relational databases in their web applications, they are not very good and usually it's a hassle and more trouble than it's worth to use a relational database with Node and express.
Con Not so widely used
Could be problematic to convince the client use this framework in his/her project.
Con Not very beginner friendly
Although the documentation for Feathers is very good, it still needs some configuration in order to get Feathers up for developing something with it.