0

I have little experience with meteor, so for others who have some...

What are some concrete downfalls, if any, of building what would normally be a multi-page app (e.g. blog) in meteor? I can't think of any reason not to go with meteor for my project other than fear of the unknown.

ironicaldiction
  • 1,200
  • 4
  • 12
  • 27
  • Ahah Meteor is really awesome, indead. I have checked a lot of website built with meteor and the result is very good whatever the project ... – Benjamin Feb 11 '15 at 16:34
  • With big projects render time can be longer than just static content of blog, hard to keep reactivity with relational DB, if you wanna cheap website can be tough cause from what I saw cheapest servers are on Digital Ocean $10 cheapest, where in PHP can be half of it or even less, and as you said, Meteor is pretty new framework so there are few Meteor job offers. But all that doesn't really matter because pros are much bigger than cons. – sdooo Feb 11 '15 at 16:43
  • @Sindis: Digital Ocean has a [$5/mo offering](https://www.digitalocean.com/pricing/), which can run a basic Meteor app just fine. – Dan Dascalescu Feb 12 '15 at 00:02

2 Answers2

4

See the "What Meteor lacks" section in Why Meteor:

  • Native reactive "joins" for MongoDB (which doesn't have joins). There are, however, community packages for this.
  • A widget library. Meteor can be used with many client libraries (Bootstrap, Famo.us etc.), but aside from OAuth login, it doesn't have its own set of widgets. Integrating 3rd party widgets ranges from trivial to complex and leads to a paradox of choice when considering the multitude of more-or-less integrated widgets available on Atmosphere, Meteor's packages repository. UPDATE: keep an eye on my Meteor + Webix integration.
  • A native mechanism to load templates dynamically. The feature is on the roadmap as "incremental loading". In the meantime, have a look at numtel:publicsources and numtel:privatesources, which let you create bundles for lazy loading resources, with or without authentication.
  • Two-way data binding as in Angular. This is by design. The Flux team at Facebook criticized how two-way data binding creates a major challenge for scaling applications because views can trigger changes in data, and data changes can trigger cascading changes in views, which makes it very difficult to predict the behavior of the app as a whole. The solution is to use an MVVM pattern, such as the viewmodel package.
  • Native server-side rendering (useful for SEO). There is however a server-side rendering package developed by Meteor guru Arunoda Susiripala, and native server-side rendering support is also on the roadmap.
  • Production-read support for Windows. This is in preview stage as of February 2015 and works for the vast majority of use cases. UPDATE: Restarting the Meteor server when changing files takes has been optimized to take the same amount of time as on Linux.

Yeah... so not much really.

Dan Dascalescu
  • 143,271
  • 52
  • 317
  • 404
0

A downfall is that all code (templates, core, ...) are downloaded upon first page load. An upside is that navigating after the first page load is (almost) instant.

  • Load of all templates at start can be avoided by using fast-render or SSR. – sdooo Feb 11 '15 at 17:26
  • 2
    @sindis your app still downloads everything with fast render and meteor doesn't have server side rendering yet (spiderable is only for search engines) – Manuel Feb 11 '15 at 17:38
  • It downloads everything, OK, but at start it downloads only templates needed, and then after page already laoded downloads the rest. And Meteor DO have SSR, not in core packages but it's working fine. – sdooo Feb 11 '15 at 17:46
  • 1
    You misunderstand how Meteor works. Meteor converts all html into js and packages it into one file. Fast render doesn't change that so you still have to download the entire app. As for the ssr package, read the documentation, your app still has to load normally but you have the option of calling a server method to render a template (on the server). – Manuel Feb 11 '15 at 18:50
  • See [how to lazy load templates on demand in Meteor](https://stackoverflow.com/a/28334315/1269037). – Dan Dascalescu Feb 11 '15 at 21:36