Express.js vs Meteor
When comparing Express.js vs Meteor, the Slant community recommends Express.js for most people. In the question“What are the best backend web frameworks?” Express.js is ranked 3rd while Meteor is ranked 34th. The most important reason people chose Express.js is:
Setting up a new Express project is very easy. It consists of installing a handful of libraries through NPM run a single `npm install` and everything is ready to go.
Specs
Ranked in these QuestionsQuestion Ranking
Pros
Pro Setting up is very easy
Setting up a new Express project is very easy. It consists of installing a handful of libraries through NPM run a single npm install
and everything is ready to go.
Pro Great routing API
Express' extremely powerful routing API allows developers to do tasks ranging from building a REST API to building the routes for a simple web app and then take it to the next level by using route parameters and query strings.
Pro Great for beginner Node.js programmers
With a little learning curve, it is a good choice for new NodeJS developers to get started quickly. Express boasts great, thorough documentation.
Pro Express.js is in the Node.js Foundation Incubator Program
Node.js Foundation
Announcement here
The Node.js Foundation is a Collaborative Project at The Linux Foundation. Linux Foundation Collaborative Projects are independently funded software projects that harness the power of collaborative development to fuel innovation across industries and ecosystems.
Pro Relatively mature
Being a somewhat old Node.js web app framework and being one of the most widely used frameworks, Express.js has matured quite a lot during all that time. It's more stable than its competitors and a huge community backing it.
Pro Support for a lot of plugins
Express takes advantage of Node's NPM to distribute and install countless plugins made by third parties which solve almost anything a developer would want to do with Express.
Pro Has the largest userbase
It's by far the most popular framework for node.
Pro Great supportive community
Express has a big community with a lot of guides and tutorials written about it by developers that have been using it for quite some time.
Pro Good Oauth/Facebook integration with connect module
You can easily add oAuth integration/social logins to your next web app without much hassle, using this authentication middleware for connect.
Pro Has detailed information
Very simple and fast.
Pro Lightweight
Pro Massive ecosystem of middleware
If you have not already checked out the Express.js ecosystem of middleware, you should.
Pro Easy to learn
Meteor was developed with simplicity in mind, even for beginners who have just started using JavaScript frameworks. One of the reasons that beginners should start with Meteor is that Meteor is a full-stack framework, this way they can get the complete learning experience when it comes to web development (back-end and front-end development), all by using a single platform and a single language.
Furthermore, Meteor does not have complex and esoteric concepts that may be hard to grasp by a beginner, it has a clear documentation and well-established coding conventions.
There's also a very useful resource for learning Meteor in the form of a book: Discover Meteor, by the authors of many Meteor packages.
Pro Full-stack reactivity
Changes in the database will be propagated to all subscribed clients in real time, without you having to write any code.
Pro Isomorphic package system
A Meteor package can supply code for both the client and the server, and for mobile (Cordova) apps. For example, an autocomplete package supplies both server code to search a collection, and client code to display the results. The mdg:camera package supports the native camera if the app is built for mobile, or the HTML getUserMedia API to take pictures from the browser.
Pro Built-in security
Meteor takes care of many concerns with it's out-of-the-box security measures.
Pro Seamless communication between client and server
Meteor is built on top of Node.js and jQuery on the client.
Meteor enables the client and server to communicate data seamlessly, in real-time. You don't have to write any REST API or pub/sub code - Meteor takes care of it all automatically for you.
Pro Integrated front-end library
Meteor uses both your existing front-end library and it's own library called Blaze, which is integrated beautifully in the framework and fulfills the purpose of a true MV* front-end framework.
Pro Auto reload/refresh (hot code push)
Every time a change in the source file is saved, all connected clients will refresh automatically - browser tabs, mobile apps running in the simulator or on the physical device.
Or, deploy a Meteor app (meteor deploy myapp
) and all clients, plus all mobile apps with the server set to myapp.meteor.com
will automatically reload to use the code changes.
This drastically reduces the development cycle for apps in the App Store, where a regular update can wait for one to two weeks before being approved.
Pro Popular
Meteor is the 10th most starred project on GitHub and has overtaken even Rails.
Pro Support for MySQL, PostgreSQL and Redis
While Meteor only supports MongoDB and Redis natively, MySQL support is on the roadmap, and there are 3rd-party packages that integrate MySQL reactively with Meteor to some extent, such as numtel:mysql. For reactive PostgreSQL support, there is numtel:pg.
Pro Real-time testing framework
Meteor also has an official testing framework called Velocity. Velocity enables real-time unit testing and integration with Jasmine or Mocha syntax. Tests are automatically run when code is saved and the testing result is indicated by a green or red dot in the upper right corner of the app.
Pro Includes latency compensation
The client will mimic instant server-side response, and updates automatically if it was different once the information is available.
Pro Mobile apps from the same code base
Meteor can generate mobile (iOS and Android) apps from the same codebase as the web app, using the Cordova (PhoneGap) library (which brings native device functionality to JavaScript applications).
Meteor-generated mobile apps are JavaScript, HTML and CSS bundles that run in a UIWebView (on iOS) or WebView (on Android). Apps can be run locally in the iOS/Android emulator, or on physical devices. You can also publish them to Google Play Store or Apple's App Store.
Moreover, these hybrid mobile apps benefit from hot code push, which dramatically accelerates the development cycle.
Pro Eliminates the need to look for a database to use
Meteor uses MongoDB, eliminating the choice among NoSQL databases. MongoDB is highly scalable - used to store petabytes of data and perform billions of operations daily at eBay, FIFA, Adobe, Craigslist, McAffee, Foursquare and others.
Pro Gets rid of Node's callbacks
Although Meteor's server side runs on top of Node.js, it manages to avoid callbacks by making use of Fibers.
Pro Extensive ecosystem
Meteor's package repository called Atmosphere has more than 5000 packages available. What's more is that Meteor can also use into the packages available for the Node ecosystem.
Pro Powerful performance monitoring tools
Meteor uses Kadira which is an excellent performance monitoring tool for Meteor apps. It profiles CPU and RAM consumption, subscription latency and throughput etc.
Pro VC-funded open-source
Bright future for Meteor - funded by venture capital and open-source.
Pro In-app debugging
The community behind Meteor has created a useful application for debugging Meteor apps that will automatically delete collections and display client-side documents, allow you to control subscriptions and lets you modify the documents.
Meteor also has great support for server-side debugging, and WebStorm has also released full support for Meteor, including debugging capabilities.
Cons
Con No single recommended way of doing something
Express considers itself to be a "minimalistic unopinionated framework", it basically lets the developer determine how their project will be organized. On one hand, this gives anyone terrific power and flexibility to use any library they want for a certain task and to organize their project structure however they want. But on the other hand, there's no single recommended way of organizing things, which can be a trap for beginners and experienced developers alike and result in unmaintainable projects.
Con No native SEO support (no server-side rendering)
Meteor does not have support for server-side rendering of views, which is extremely helpful when it comes to SEO. However, there's a third-party server-side rendering package available for download. The Meteor team has also said that server-side rendering is on the roadmap.
Though lately Google has announced that the search engine can render JS and CSS files just like modern web browsers
Con Officially supports only MongoDB, which is well-known to have issues with data integrity
MongoDB advertises scalability but only if you don't care about data-integrity. There are other backend options but none of them are officially supported.
Con Requires reliable network connection
It's common for the front-end and back-end to lose sync if an internet connection is flaky. Even though the connection should be in real-time, if the connection is weak, you may lose that real-time sync. For example, in chat applications you may have to refresh the page to get the latest updated data from the server.