Meteor components: which approach to choose?

I’m using meteor for last 8 months and fill big need of some kind of component architecture. It seems, that many people also want that and some already created their solution.

I did small research and from what I found, I would be happy if ideas proposed by @sashko in Blaze2 discussion on hackpad will become reality. The only question is when and if…

Now I’m looking on a few already woking solutions:

  1. meteorhacks:flow-components
  2. peerlibrary:blaze-components
  3. reactjs:react
  4. manuel:viewmodel

Questions

  • What’s you filling, which approach has more chances to be supported for longer and by bigger community?
  • Which solution/package should I use? Which of them will stay for at least a year or two?
  • Do we have chances, that Blaze2 will be more component oriented (like proposed on hackpad)?

Any suggestions?


UPDATES

4 Likes

I’m quite not sure when Blaze will come. But there are a lot of components solutions popped up. I can tell you about flow-components. It worked for us. But we are not comfortable releasing it yet to the public. So, keep that in mind.

React is getting the momentum, so give it a try. Do your research first. Once you picked a solution, you may need to use it for a long time.

@arunoda, what to you mean by we are not comfortable releasing it yet to the public? Your package is already available publicly on atmosphere and has 160+ downloads.

Does it mean that you’re not planning to support it and do active development using your meteorhacks:flow-components? Or you just think that it’s still very green and not good for beginners.

After looking at all of these last night I can’t see React losing. There is too much muscle, too broad an ecosystem, plus React Native… No one will write Meteor-specific UI components when they could just write React components and use Meteor as the reactive stack underneath.

Blaze and others might survive for people who like a certain separation of content and presentation and are just targeting the desktop web but frankly those are dinosaurs. A components-based solution is going to follow the component ecosystem. React is a natural for Meteor and removes a lot of legacy oddity IMO. Try it.

1 Like

I just spend 5 hours or so to look at React. Sounds interesting, but I feel that I’m the type of person who likes separation of content and presentation. However, I’ll try to create some small project in React (and probably using some other components package) to check how it feels to code in their way. O at least to use React/BlazeComponents/FlowComponents for part of my app where components needed.

2 Likes

I think a lot of the magic comes in in ES6 with inline HTML. You can use that now I think with e.g. grigio:babel.

When you think about components as such, don’t you want everything in a component wrapped up into a neat little package? A lot of the separation benefits become costs when everything is component-oriented.

For working with designers, I’m of the opinion designers shouldn’t handle code at all unless the code is super-accessible. They can do wireframes, PSDs, CSS on placeholder HTML and that can then be shattered into components by the developers with no roundtripping back to the designers beyond the CSS. (Er actually, now I’ve gotten to the point of seeing React using inline, JS-coded styles, so I suppose the designers just have their own mocked version of the app to work with and the developers keep syncing it to the component version…)

Do you know any good example of bigger app written on Meteor with React? Would be interesting to see the code. Leaderboard isn’t really good example, so example of todos or telescope type of apps would be awesome.

1 Like

Just curious because I’m looking into it myself - why is the interest level in Polymer so low? I agree that React is gaining a lot of momentum right now, but I wonder if/how that will change when Polymer moves from 0.8 to 1.0

Polymer packages/components are too big and don’t work well with Safari and earlier IE, useful for mobile app or desktop application like Atom editor is planning on using Polymer.

1 Like

Give ViewModel a try, you might like it.

1 Like

I agree with @proyb2, Polymer components are too big and too raw for now. If you’re using not Chrome, they are very slow (because of lack of support of some EC6/EC7 features polymer use).

I was quite optimistic about Polymer, but at the moment it’s simply not ready for production.

Gotcha - thanks. I was just trying to get a sense if the issue with Polymer is a “not ready yet” concern, or something more fundamental

Actually, we most of the development in public. So, that’s doesn’t mean it’s ready.

It worked for us and we are using it and we need to maintain it. But we don’t have proper unit and integration tests yet. That’s why I told it it’s not ready.

And this is a very competitive topic with a lot of choices. No one is mature yet.

1 Like

You can see comparison between Blaze Components (of course biased) and other approaches at the end of the README: https://github.com/peerlibrary/meteor-blaze-components#related-projects

1 Like

I recently spent some time working with flow-components. The only real issue I have with it is that it completely disconnects you from the blaze data context. Data context values end up being copied into component-specific reactive variables. This sounds great in theory due to better encapsulation, etc. However, in practice it causes a lot of extra overhead. Reactive changes in the data context force a deletion/recreation of the component.

I haven’t tried out peerlibrary:blaze-components yet, but it looks like it does support accessing the data context directly (https://github.com/peerlibrary/meteor-blaze-components#passing-arguments).

polymer turns 1.0!!! https://blog.polymer-project.org/announcements/2015/05/29/one-dot-oh/

I’ve done some work with Vue.js which is interesting. View model with 2 way data binding, filtering & validation etc.
See niallobrien.me/projects

@arunoda is it true, that your team already switched to React and you’re not working on flow-componens anymore?

Yes true. We moved to React. We are simply following the trend. It’s so hard to avoid that. We tried.

But, we didn’t kill flow-components. Our Kadira UI and BulletProof Meteor is on Blaze and we have no plans to change it. Flow Component won’t die.

2 Likes

@mitar What about blaze-components. Will it have a future?

thanks