TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

I like Meteor.js because I'm lazy

89 pointsby halisaurusover 11 years ago

13 comments

ilakshover 11 years ago
There is an unfortunate belief that any programming system which is significantly easier to use must automatically have caveats that make it unfit for &#x27;production&#x27; use. And another similar belief that such systems are unfit for use by &#x27;real&#x27; engineers. For example, if AngularJS had come up with an easier-to-understand way of creating components (directives) then it may have been dismissed as just another tool for novices. But some aspects of AngularJS are sufficiently complex that it is acceptable to &#x27;real&#x27; engineers.<p>These are false beliefs and one of the reasons that (this is obviously an estimate off the top of my head) about 95% of programmer time is wasted solving problems that have already been solved numerous times. I see people hinting at security or other concerns related to using Meteor in production, but I have yet to see an example where one of these concerns actually caused a production issue.<p>I would be very interested to hear if anyone had actually tested Meteor in production, or had specific concerns related to security or anything that leads them to the conclusion that they must come up with their own different&#x2F;more complex solutions to problems that Meteor solves.<p>Taking advantage of a system that solves 90% of your problems rather than reinventing six wheels is not lazy. Its just sane and mature.<p>The psychology of programmers related to tools and frameworks is childlike. Its as if everyone is in a playroom with a bunch of tiny blocks of different shapes. Every once in awhile a kid figures out how to construct generally useful connector shapes or recognizable objects from the smaller blocks. Then when another kid wants to use the larger pre-composed structures to play with, everyone makes fun of him because he is &#x27;cheating&#x27; and must be too dumb to use the tiny blocks.
评论 #6513949 未加载
评论 #6513662 未加载
muraikiover 11 years ago
I&#x27;ve been learning programming for about a year and Meteor was the first Javascript framework that I used. I found it remarkable how quickly and easily I was able to get something up and running, given that I had relatively little experience with Javascript (I read most but not all of Eloquent Javascript).<p>I used it to make an online multiplayer Go board where you can see your opponent moving the pieces, for the purpose of teaching games: <a href="https://github.com/muraiki/senseinogoban" rel="nofollow">https:&#x2F;&#x2F;github.com&#x2F;muraiki&#x2F;senseinogoban</a> Being able to make something like this as a beginning programmer was really exciting! Since I&#x27;m pretty new to programming I don&#x27;t know if the code is that great but it might give some ideas to people who are interested in using Meteor in a graphical way (as opposed to something like a To Do list).
rgloverover 11 years ago
I&#x27;m a big fan of Meteor. As a front-end dev that got his start in JavaScript with jQuery, it&#x27;s been really easy to settle into. I did a pre-release of a Meteor app into production today (<a href="https://properapp.com" rel="nofollow">https:&#x2F;&#x2F;properapp.com</a>) and it&#x27;s running pretty well.<p>The latest dev shop outlines what&#x27;s in store for the 1.0 release (<a href="http://www.meteor.com/blog/2013/10/01/geoff-schmidt-at-devshop-8-getting-meteor-to-10" rel="nofollow">http:&#x2F;&#x2F;www.meteor.com&#x2F;blog&#x2F;2013&#x2F;10&#x2F;01&#x2F;geoff-schmidt-at-devsh...</a>) and based on where they&#x27;re at now, it&#x27;s exciting to think of what will be possible.<p>Definitely not a toy, though, and something that should be evaluated carefully.
评论 #6512899 未加载
评论 #6512774 未加载
评论 #6514475 未加载
nonchalanceover 11 years ago
Have you tried similar frameworks like Derby (<a href="http://derbyjs.com/" rel="nofollow">http:&#x2F;&#x2F;derbyjs.com&#x2F;</a>)? If so, can you compare your experiences?
评论 #6513891 未加载
评论 #6513168 未加载
评论 #6512145 未加载
wc-over 11 years ago
It was fun developing the MVP for <a href="https://lawyermatch.me" rel="nofollow">https:&#x2F;&#x2F;lawyermatch.me</a> on top of Meteor. Would I recommend meteor in its current form (v0.6.5 or so) for a large production website? No, but neither do the core meteor devs. Would I use it again for a quick prototype? Absolutely, especially if you are already planning to use mongo, node, handlebars, or the other core meteor technologies.<p>I saw one of the core devs speak in Chicago a week or two ago, and the main feeling I came away with was that the Meteor team has a well planned roadmap of features, solid funding, and a plan for generating revenue, all of which will hopefully mean Meteor isn&#x27;t going anywhere.<p>Edit - I think this article hits on some of Meteor&#x27;s strengths re: ease of development, but some of the features Meteor uses to accomplish this turn into gotchas later. For example, the autopublish and insecure packages are awesome for a 5 minute demo but for anything further they should be removed. Without them, devs are back to thinking about queries and what clients receive what data, permissions, etc. These are very important things obviously but it might be a little misleading for someone using Meteor for the first time.
prezjordanover 11 years ago
Totally acceptable to use Meteor first because you don&#x27;t want to &quot;reinvent the wheel&quot; so to speak. It&#x27;s fantastic for prototyping real-time concepts.<p>If your idea works, then you can &quot;mature&quot; your codebase a little. But, from the get-go, you&#x27;ll want to make something usable, to see if your idea works at all. Meteor is perfect for that sort of thing.
评论 #6513020 未加载
jumpman222over 11 years ago
I really like Meteor too. It makes developing a sophisticated app incredibly easy. Even though it is only in preview mode, it is extremely polished. I can&#x27;t wait to see what version 1.0 has in store!
joecarpenterover 11 years ago
Interesting enough, I found that Meteor is not production ready, in both current implementation (not mature) and some design decisions. I was thinking about writing blog post about it, but no idea when I&#x27;ll have time to do it, so I decided to stop by.<p>I have experience with Meteor in production and had some serious performance-related problems. Not that they&#x27;re not solvable, but some solutions kill some core design decisions of Meteor. Just in case - I didn&#x27;t pick Meteor for the project, I was asked to help with it.<p>Anyway, here&#x27;s short list:<p>1. Collection synchronization does not really work even for relatively small amounts of data (say 10k records).<p>- It does not make much sense to send few MB of initial data to the client. Paging API was moved to some distant future and you end up writing REST-like API on top of Meteor, which breaks idea of collection synchronization, which contradicts statement on their website - &quot;no need to write REST APIs anymore&quot;. I don&#x27;t say it is not usable at all, you just need to be really-really careful about what you send to client and it is easy to fail at this.<p>- SockJS (transport protocol used by Meteor) does not have rate-limiting built-in. If client connects using one of the polling transports and payload is too large to be received in 30 (? - vanilla SockJS uses 5) seconds, server drops connection thinking that client timed out. Partially, it is SockJS problem and partially it is Meteor problem, as Meteor will just send all outgoing data without caring if client is on slow connection. But because of previous point, generally it is bad idea to send large amount of data anyway.<p>- Server-side subscription API is very limited. Official documentation has following sample: reactively count number of admins in collection. This is done by listening on collection changes and counting admins by incrementing (when admin is added) and decrementing (when admin is removed) single variable. If there are 10k admins in database, increment function will be called 10k times.<p>2. Minimongo is interesting concept, but fails on many levels:<p>- It is MongoDB written in JS, but slow<p>- Does not have indexes (&quot;client won&#x27;t handle amounts of data for indexes to be viable&quot;), aggregation, map reduce, etc. There&#x27;s no official API to create index on server-side either.<p>- Its reactive - whenever model is changed, Meteor figures out which fields were changed and broadcasts changes to all listeners. And this is _not_ fast. Inserting 10k items to collection will take around 2 minutes on AWS large instance with node executable using 100% CPU.<p>- Because MongoDB is not &quot;reactive&quot;, Meteor just polls collections every 5 seconds to see if they changed by outside application. I really hope it only tracks addition&#x2F;deletion of records and not scanning through all rows in database during each polling iteration<p>- Meteor API is hiding MongoDB handle, but there&#x27;s a way to get it (through hack) and use it directly. And it takes 3 seconds to insert same 10k items<p>3. Client-side is not as convenient as current MV* frameworks<p>- Meteor is using non-reactive templating engines and attempts to make them reactive. And this might be performance bottleneck, especially on mobile devices. When single variable changes, Meteor will re-render whole template. If you have some 3rd party plugins (like WYSIWYG editor, which injects own DOM markup), you have to wrap it with special blocks, which prevent Meteor from re-rendering them.<p>- As a result of previous point, DOM is not stable.<p>- Unlike AngularJS&#x2F;Ember&#x2F;etc, Meteor does not track individual variables. AngularJS does it by checking if variable changed in digest loop, Ember uses property-like system, etc. Meteor has global, flat namespace called &quot;Meteor.session&quot;, where application stores _all_ reactive variables that can be referenced by their name. `Meteor.session.set(&#x27;mymodule.hello&#x27;, 10)`. It is hard to structure application, when core reactive part is just a singleton dictionary.<p>- Once you get used to bidirectional data binding between forms and models, it is hard to get away with events. But that&#x27;s minor.<p>4. Overall architecture (nitpicking):<p>- Meteor API likes singletons. `Meteor.session`, `Meteor.methods`, `Meteor.templates`, etc. Single, flat namespaces everywhere<p>- Even though code can be written in a way it can run on both client and server, there are subtle core API differences. Like it is not possible to use `HTTP.get` on the client without callback, but it works on the server, just blocks the fiber. If you use callback on the server, you need to block the fiber manually (using future or fiber API), etc.<p>- No server-side templates. Yes, there&#x27;s crawlable package for Meteor, but it is just PhantomJS (WebKit) that runs on the server and renders pages for crawlers. Yikes.<p>This pretty much sums my experience with Meteor.
评论 #6515514 未加载
评论 #6513888 未加载
评论 #6513928 未加载
dpearceover 11 years ago
We (<a href="http://differential.io" rel="nofollow">http:&#x2F;&#x2F;differential.io</a>) have been using Meteor.js almost exclusively since switching from rails about 5 or 6 months ago and are very excited about where the framework is headed.<p>Obviously, it&#x27;s still new and has some kinks but 1.0 is around the corner, and we&#x27;ve found the ease of development is well worth the few issues we&#x27;ve had to work around.<p>An example app: <a href="http://assistant.io" rel="nofollow">http:&#x2F;&#x2F;assistant.io</a>
sgdesignover 11 years ago
If you&#x27;re curious, here&#x27;s another example (open-source) Meteor app: <a href="http://telesc.pe" rel="nofollow">http:&#x2F;&#x2F;telesc.pe</a>
Herbert2over 11 years ago
I was hoping some of meteor&#x27;s users could answer a few questions about it.<p>Can meteor use Postgres instead of MongoDB? Could meteor do sync with the database through a server-side rest client (instead of mongodb)? Is TDD possible? Is CoffeeScript possible?
omarrrover 11 years ago
Always amazes me how some posts like this one have zero comments in the blog itself but a dozen in HN.
评论 #6512320 未加载
oddshocksover 11 years ago
Stop it, JavaScript.<p>Stop it. Stop being used for application programming.<p>Stop.
评论 #6512223 未加载