4 ms·
Meteor is good, but not at everything, so it's very important to understand the trade-offs. Pros: 0. Obviously, its major strength is its "real-time"[0] natur
by napoleond 13y ago
Meteor is good, but not at everything, so it's very important to understand the trade-offs.
Pros:
0. Obviously, its major strength is its "real-time"[0] nature: I have built multiple chat systems (and presumably so has anyone else who's used Meteor, because it's an example of something that's fun and easy with Meteor but relatively hard with a traditional stack) as well as a map application that tracked the motion of a company's employees in relation to their destination (as part of a dispatching system).
1. It's also the least complicated way of sharing code between the browser and the server that I've seen to date.
Cons:
0. It's non-npm package manager feels like NIH to me (although I'm sure the team had valid reasons, I've never looked into it). Apparently it's still possible to require npm modules[1], although I've never tried it.
1. You're more or less stuck with MongoDB for the time being, which I guess a lot of people like but it's not really my thing.
2. There's not really any SEO capability, but that's sort of a given. Just don't use Javascript frameworks for that sort of project (or do, and do all sorts of weird shit to help Google).
3. It's kind of too auto-magic for me sometimes. The documentation is generally very good, but I occasionally run into weird variable scoping issues and the like, without any way of really figuring out what's happening. Of course, the source code is available[2] if I had time to read it. (Well-written, but big, and I find reading Node code to be mentally more taxing because of all the callbacks.)
4. The biggest con, for me, is that Meteor is basically limited to web applications. I really enjoy the typical single-page web app approach of building an API first, which you can access from other apps later (ie. mobile/tablet). I have no idea how I'd do that with Meteor. I'm experimenting with bundling a Meteor project and inserting the client-side code into a Phonegap app, for a mobile chat thing I'm working on, but that's obviously not ideal.
Generally, I love working with Meteor. I know I've written more cons than pros, but the pros I've listed are huge, and they've allowed me to work on cool stuff. You just need to know what you're getting into.
Footnotes/Links:
0. The scare quotes are for the people familiar with embedded real-time systems who seem to always find these comments and complain about how that word has an entirely different meaning when it comes to web applications.
1. http://stackoverflow.com/questions/10165978/how-do-we-or-can-we-use-node-modules-via-npm-with-meteor http://stackoverflow.com/questions/10165978/how-do-we-or-can...
2. https://github.com/meteor/meteor https://github.com/meteor/meteor
- Tarang 13y agoThere are couple of issues here. > There's not really any SEO capability There is a spiderable package that does allow SEO. It uses Google's AJAX guidelines (added using meteor add spiderable) : https://developers.google.com/webmasters/ajax-crawling/ https://developers.google.com/webmasters/ajax-crawling/ > The biggest con, for me, is that Meteor is basically limited to web applications You can build phonegap apps in Meteor. There are tools that bundle it very quickly such as https://github.com/SpaceCapsule/Meteor-cordova https://github.com/SpaceCapsule/Meteor-cordova. While technically a web app it goes a step further than other platforms can do since you can have an offline web app with offline data (in a cordova app). I've also used the DDP backend for C# applications. In fact you can remove the entire web-app functionality of Meteor and use it just as a back-end to store data like a reactive database. > I occasionally run into weird variable scoping issues Typically you have to make sure your global variables aren't shared by different closures. There are articles that explicitly deal with this with the Meteor.bindEnvironment method.
- napoleond 13y agoThere is a spiderable package that does allow SEO. Google's AJAX guidelines don't really mean much (at least as of the beginning of this year, I haven't done SEO work in a bit). I mean, for SEO purposes using the guidelines is better than not using them, but competitive SEO sites don't depend on the Javascript execution of Google's crawlers. You can build phonegap apps in Meteor. There are tools that bundle it very quickly such as https://github.com/SpaceCapsule/Meteor-cordova https://github.com/SpaceCapsule/Meteor-cordova. Cool! I hadn't seen that before. I use the DDP backend for C# applications. In fact you can remove the entire web-app functionality of Meteor and use it just as a back-end. Awesome. Is that documented anywhere?
- Tarang 13y agoI do admit I have a couple of problems with the spiderable package. Google indexes a 'loading page' but I think I've implemented it incorrectly since others don't have the issue. Google's crawlers don't execute the javascript. A phantomJS script captures the raw text of the page by calling itself then when google crawls the page it gives this pre-rendered html back. The webapp stuff is mentioned on their blog: http://www.meteor.com/blog/2013/08/14/meteor-065-namespacing-modularity-new-build-system-source-maps http://www.meteor.com/blog/2013/08/14/meteor-065-namespacing...