Feature | Meteor.js | Derby.js | Vert.x |
Language | Javascript | Javascript | Polyglot: Java, Javascript, CoffeeScript Ruby, Groovy, Python (will support Scala and Clojure) |
Decent examples | *great* examples of typical web apps with lots of dynamic UI; excellent documentation | Good core examples and one good shopping cart/auth example | |
Package management | Custom meteor wrapper and can use most (not ones w/ heavy dependencies) Node.js modules by going into the app/server directory and using npm | Uses node.js' standard npm package manager | Uses vertx package manager |
Server-side templating | does view generation on client | Best at this so client-side loads are very fast | Mustache module for JS, Groovy has built-in templating. No templating for other languages built-in AFAIK |
Web crawlable output | Yes, added recently | Yes (side effect of server-side templating) | Yes (Mustache/Groovy output HTML) |
Event bus | Yes | Yes | Yes |
Uses multiple CPU cores | Yes, but needs one instance per core (Node.js limitation) | Yes, but needs one instance per core (Node.js limitation) | Yes (Java engine underneath uses all CPUs) |
OAuth Authentication | Built in OAuth module | Yes, but you have to code it using Node.js' Passport module | No, though can be done using scribe-java |
DB Authentication | Built in, including password recovery | Partially in...EveryAuth module will be added eventually | Built-in, but no password recovery |
Default DB | MongoDB | MongoDB | MongoDB |
Easy to Replace DB | No, because MongoDB API is exposed at browser | Yes | Yes |
Offline DB Conflict Resolution | No | Work in Progress | No |
Dynamic DOM binding | One way, renders entire DOM that needs updating | Two way, renders partial DOM as needed when changes made on client | Not a web framework |
DOM Event Handlers | CSS reference | HTML attributes in templates | Not a web framework |
1. Kynao03/24/2014 19:15:25
Excellent. Thanks for this kind of head to head, very useful.
Can it be updated to now ?
Are you interested into suggestions for adding rows into this table ?
2. ken02/27/2013 16:04:05
@Tony:
Firebase is actually looks more exposed than Meteor is. With Meteor, you can force all updates to be done via server methods where you can use JS business logic to validate things. When you update subscribed MongoDB collections on the server, the data gets pushed down to the web client. It's not too bad, but you do have to be careful that you don't publish too much info down to the client.
3. Tony02/26/2013 08:37:38
Nice comparison. You could add firebase into the pack.
My concerns with Meteor and Firebase are that they're exposing the DB API out to the world, and anyone could take advantage of that.
Also, they're quite rigid with the chosen DB.
cheers,
T
Su | Mo | Tu | We | Th | Fr | Sa |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |