Guidance for newcomers

Hi guys,
I’m looking at all the developments in MeteorJS like
*meteor 1.2,
*the addition of react and angular,
*the argument for flow router and flow layout instead of iron router,
*blaze plus. etc
For a newcomer this is getting confusing :frowning:
…can someone say
– what is the best set of packages someone to use today?
– is there a comprehensive tutorial that incorporates these new developments to create a full “line-of-business” application?
In particular one that is based on related or joined collections??

thanks

Robbie, imagine you start learning PHP. You get to know about all the frameworks and the different versions for them, about libraries that are in common usage that get deprecated or replaced by others etc. Is there such a tutorial that would tell you “please use Symfony instead of Zend or Laravel instead of CodeIgniter”? No, because all of these libraries have their set of better and worse sides, there’s always some field or type of apps they suit the best.

The same with Meteor. There is no best set of packages someone would use today. F.e. I could point you to use Blaze Components, but I don’t really think it’s better in every usecase than let’s say Template-Extension package or Flow Components or ViewModel. It just suits my personal preferences more, but I would be fine with using any of them.

When I started learning Meteor, I dedicated around a week to fully get to know the different options from which I can build my own Meteor stack. I did my tests, checked different packages out in practice, wrote some simple apps, tweaked tutorials to use other ways of doing things. I recommend you the same thing, there’s no better way to actually understand why you chose one package over the other. And there is a reason why such a thing is important - there’s never one tool that can fit all cases the best way. You may start with one package and master it, but someday you want to write an app where you’ve got different requirements and you will simply miss the fact that a competitive tool would be better for this particular work, or you’ll hesitate to use it, because you’re not familiar with it enough.

I agree that perhaps there could be some sources where we could learn everything we need about Meteor package environment. But they will never be up to date, especially for rapidly growing environments that didn’t hit their stable stage yet, in which there actually are such sets of well-working together packages, tested in battles against particular kinds of problems.

Actually, I may write such a thing for my upcoming Boobtorial series in the form of objective comparison, but you’re sure to learn things by yourself before I release it online.

Maybe a webapp with comparisons of Meteor packages solving same kinds of problems that can be edited or enhanced by the community would be in place here. The closest to that in concept seems to be MeteorPedia.

That said, I can share with you the basic stack which I use for my recent project:
Blaze + Coffeescript + Jade + Stylus + Semantic UI + Flow router + Blaze Components + Collection2 + Autoform + CollectionFS + CKEditor

3 Likes

Well in essence you cannot compare a language PHP to a full stack framework as Meteor. You should compare Meteor with Zend or Javascript with PHP.

Also it’s part of Meteor’s main concepts:

Use the recommended Meteor stack as-is, or customize it by swapping in your preferred components
https://www.meteor.com

So yes Robbie has a point.

At this moment I think you should start with one of the tutorials:
https://www.meteor.com/install

And yes you have to make a choice, Blaze, Angular, React. If you are a beginner on Meteor I would suggest to start with Blaze for now. Since there is the most documentation, examples, etcetera for. You will need to learn it anyway to understand many packages.

Routing is something where no opinion of Meteor is yet. So that will be a choice to make. Not needed at the start but when you start making bigger projects it becomes important. See the many discussions about it.

Most important thing:

In particular one that is based on related or joined collections??

Meteor is not a CRUD framework, it’s not like Zend, CakePHP, .NET etcetera.

If you want to succeed with Meteor you have to let go that idea. Mongo and Meteor work different totally. If you wrote before PHP with MySQL in plain and you switch to a framework like Zend it’s also a huge different approach. You cannot do a quick query anymore, you have to use an adapter, model etcetera. That’s the same kind of step. So don’t look for how you did it before but look how it should be done on your new platform.

1 Like

Thanks so much for the responses everyone.
I dissagree with the idea of meteor not being a CRUD thing. It MUST be a CRUD framework otherwise how could it create any useful web applications for business?

I come from the SQL world and I suspect there will be some situations where you may be trying to convert an existing app (say from MS Access) to meteor and have to maintain the data model with related collections.

By now there must be some best practices or empirical/performance evidence to say if blaze is better than blaze plus or Angular or React or iron router vs flow router etc.
I as a newcomer -am in no position to judge for myself nor do i have the time to learn all of them. Maybe the people behind meteor need to think about newcomers and the adoption process. We are not all programming gurus who will instinctively know what to do at any moment.

Meteor is not a CRUD framework, it’s not like Zend, CakePHP, .NET etcetera.

I’m a little confused by this too.

Would you expand?

1 Like

About CRUD: Maybe MVC would be a more clear term.

Zend, CakePHP etcetera mostly have a basic MVC structure. The basic tutorial generally shows how to create that structure. They really focus on having that organisational structure because you get to a PHP Framework after you did some just PHP coding. Generally you have not well structured PHP code and you try to organise it.

For Meteor there is a different thing, they show you reactivity, quickly prototyping and off course some basic CRUD stuff but it’s not the focus. It’s about getting quick results.How to structure your app is not described in the tutorial. It’s not giving you an overview on how to create packages etcetera.

Clearly MVC focussed:
http://book.cakephp.org/3.0/en/tutorials-and-examples/blog/part-two.html
http://guides.rubyonrails.org/getting_started.html
http://framework.zend.com/manual/current/en/user-guide/overview.html#the-tutorial-application

I dissagree with the idea of meteor not being a CRUD thing. It MUST be a CRUD framework otherwise how could it create any useful web applications for business?

Times are changing, many apps are not just about CRUD anymore, take a look on your smartphone apps. They look different. Users have actions (events) they execute and they want to see the results of that. Few years ago it was trendy to have a table view and a detail view, now that’s not really interesting anymore.

@lucfranken the “recommended Meteor stack” from documentation is the one with which you start after fresh Meteor install. So in my opinion the fact that such a question about what the recommended stack would be still shows up here on the forums means this “recommendation” is simply not enough.

Robbie the answer to your question is no, there’s no real empirical/performance eidence to say that f.e. Blaze or Blaze Plus are better. There is a performance comparison for different front-end frameworks used with Meteor, but it’s based on particular assumptions and it was done before Meteor 1.2 which brings us React and Angular integration as first class citizens. You can find it here: Performance comparison.

Blaze Plus is just a Blaze extension, by the same authors as Flow Component and Flow Router. But you can use f.e. Blaze Components or ViewModel with Flow Router just the same way.

As for the router, it’s not a matter of “which one is better”, it’s based more on individual preferences and needs. Flow Router has smaller scope, it’s focused directly on routing, while Iron Router solves few other problems at the same time. Iron Router has wider support in the community packages so far, thanks to it being the only available router for a long time. Flow Router will surely be a way to go if you want to replace Blaze with React or Angular, as it was written with flexibility in mind and it’s less coupled with Blaze. Iron Router has a reputation of resulting with less predictable DOM refreshes, thanks to it more reactive nature, which can be an advantage in some cases too. I use Flow Router, but I can’t honestly recommend it over Iron Router, simply because both are good in what they do.

1 Like

Totally agree in that, that’s why I find that Robbie has a point. In the beginning you need one hello world tutorial. After that you can expand to other technologies. And the question for routing is also a standard one so that should be included. That will give a full overview for a new user.

In the early days discover meteor would be my de facto response. I’m glad to see that telescope has moved to flow router, but the book has not been updated. It looks like the community is moving towards template subscription (messier code, but easier to handle) and away from Iron Router. It also very true it seems, that most people are gradually moving towards ReactJS and away from Blaze. The original tutorials and blogs seem somewhat out of date. However, I could be entirely wrong in my assumptions, obviously.

Hmm I don’t see that movement from Blaze to React being something that would change how tutorials should be written in the future. That change may be more or less common for devs with front-end experience who came to Meteor with fluent JS knowledge, but I meet lots of fresh Meteor devs who came from PHP or Ruby world and don’t really get into React hype and just want a working tool. Blaze’s wins them over with its simplicity. For them the question is more often ES6/Coffeescript than Blaze/React.

It’s still a great important resource. Also if you take the blog into account which supplements it: https://www.discovermeteor.com/blog

But yes the book also needs updates. It’s a really hard thing to keep up with all new developments it seems and it’s not a benefit for the authors of such resources.

Inspired by this topic, I started developing a community-driven app that will help new users to get a good comparison of packages for specific roles, useful informations about stuff such as which other packages they’re frequently combined with, which Meteor apps actually do use these packages, links to tutorials that use particular packages etc.

I’ll open a separate topic soon, where I’ll ask for opinions about what would be actually helpful.

1 Like

Maybe, before you start a totally new app, think about making the next steps for the real tutorial?

https://www.meteor.com/tutorials/react/next-steps

Here they suggest some steps but why not just add a chapter about routing etcetera. Then you won’t have to do (and keep up to date) the first 12 steps… Because that’s where most initiatives go under. Maintenance is hard.

Sorry, but any tutorial written by me about React would be a disaster. :smile:

haha, can be also the one for blaze off course, they are all the same.
https://www.meteor.com/tutorials/blaze/creating-an-app