I am a novice is Node, working on some pet projects. Have used Express and Angular 1.0 then. Recently when I returned after a gap to create a new project in Node (with a simple set of UIs and routing - majority code on server side), I have seen Angular had changed drastically and also its moving to Typescript.
Since I had set out searching for an alternative, I was overwhelmed and finally confused with the available options (Ember, Meteor, React, Backbone, Vue and list goes on). Few of them I have seen few months ago have vanished! I have read about the options and below are my 'impressions':
Not just that so many CLIs (MERN, Ember, meteor) and lot of new jargon like Webpack(no idea), Koa, Grunt etc... Some times I wonder how dynamic is this Node space and at what rate I need to update myself!!
Please help me...which one should I choose? (pulling my hair!!!)
I would prefer flexibility, longevity and don't mind having to code in vanilla JS.
I advise you to take a look at MEAN.JS project on GitHub (https://github.com/meanjs/mean) or the official http://meanjs.org page.
This framework was written by Amos Haviv, the guy behind the best selling MEAN book: packtpub.com/web-development/mean-web-development
Backbone isn't in any way stale, it's very alive and kicking. However I do not see much exposure on it, compared to Angular or React. I suppose that's because Backbone's core idea remains the same, which Angular changes quite drastically from version 1 to 2, and React with it's virtual DOM being super hip.
The community of Backbone is responsive, but in fact you generally don't need much support because the solution you make are your own and is probably not right or wrong. Backbone's lack of opinion is really a great thing (most cases).
There's a Backbone channel here https://gitter.im/jashkenas/backbone and you can also check out the IRC channel. The Google+ community posts new cool ideas every day. The annotated source code is up to date, as well as the documentation. Marionette and other frameworks are extremely alive (https://gitter.im/marionettejs/backbone.marionette) with lots of discussions going on.
That said, the other frameworks mentioned here all have their benefits and use cases. Just wanted to say that Backbone shouldn't be rejected because people think it's stale - it's not - you should choose the framework for your needs.
Correction to your question: React is view only and Angular is a framework (not just view).
Now let's have a look at each of the frameworks you are considering :
As you said Meteor is good for MongoDB based (realtime) apps. No doubt Meteor is awesome, but it's also a full-stack solution. That means it doesn't fit into a different tech stack. It's itself a platform which utilises Node.js and MongoDB. So, I were you (with this particular use case) I wouldn't start with Meteor.
A lot of production apps have been built with Backbone in past. But I am not sure about the current state. I don't see a lot of development in Backbone. So, to be on safe side I wouldn't go with Backbone.
As you mentioned Angular 1 & 2 are completely different. Although Angular 2 is written in TypeScript, you don't have to worry as it supports ES6, Dart etc.. So, Angular can definitely be an option. But there are some concerns regarding whether Angular is deviating from standards. For example, see this answer by @EisenbergEffect, creator of Aurelia. I will suggest you to try Angular 2 and see if you are comfortable with it.
Well, React is a library and serves as just the view layer. But most production apps (including Hashnode) that utilise React also use an architecture called "Flux". So, React + Flux can be a great combo. Also JSX is not at all hard. It's just a way of describing how your DOM looks at any point of time and is very similar to HTML (with a few gotchas).
If you go with React + Node, you can do Server Side Rendering and build isomorphic apps (which is a big deal). I don't think other frameworks support this. The community support is huge and you will definitely get a lot of help from other developers.
At Hashnode we have been using React which is working out really well for us. So, I will say React is a great choice and is definitely worth trying out.
I have heard good things about Ember. Since I haven't worked with it, I can't comment.
TIP : You should also try out Aurelia and Vue.js.
Conclusion
IMHO, go with React. But I would love to see others' perspective. You should read all the answers and take an informed decision.
There's no difference among the frontend frameworks: NodeJS should expose some APIs (REST, websocket or other) so that it won't matter who is consuming those.
Aurelia should be taken into account. It is powerful unobtrusive framework created by Durandal. Written with ES 2016. Integrates with Web Components. It focuses on web standards unlike Angular.
The list of features: Two-Way Databinding, Routing & UI Composition, Broad Language Support (ES5, ES 2015, ES 2016 and TypeScript).
It is also testable with powerful Dependency Injection Container. It is made easy for you to create highly cohesive, yet minimally coupled code, making unit testing a snap.
Dirk Porsche
Knows, that he knows nothing.
If you want to be real fast (in terms of setting things up and development) and don't want to be bothered about all the "build" tools and plumbing, go with Meteor. It integrates everything in a neat package. You can exchange parts as you go and learn. The upcoming 1.3 release has React as the default view technology, but Blaze is great and very simple.
If you already have a backend I would recommend Vue.js for the frontend. Just because it isn't React or Angular, read backed by a big company. Vue.js is maintained by a single person, so when Evan decides to stop development on Vue.js you should be able to pick the work up and drive the development in your personal direction forward.