I’m also in this boat. My earlier post about this Justifing Aurelia to myself also has a comment there about this same topic.
Currently I’m using Aurealia 1 but early on in the project so will be easy to switch and very interested to see what other’s say here.
I would also caution against putting to much weight on a todo example. It will give a good quick hands on intro but doesn’t push you into the weeds quite like a real project. It won’t really get into the areas where I think Aurelia like Angular really shine in that it is a complete framework (routing, state store, task queue, validation, internationalization, virtualization, animations etc…).
In fact, it will tend to make a more complete technology like Aurelia look more cumbersome early on.
A simple example favours a technology that is more superficial because the technology hasn’t been designed to deal with the more complicated issues that will eventually arise. It is optimized for the simple things so it can appear ‘better’ at the outset but later as the complexities are shoe horned to fit it become apparent that some of the design choices aren’t so good.
Frankly, the Vue Todo example on their website is amazing in it’s simplicity. Just some stuff in a script tag and you’re sorted . No boostrapping startup code or other files involved.
Everything is best at something but also worst at something (- Bill Buxton I think?). You need to clearly understand both cases. We are sold on the hype of what things are best for but ignore the worst.
Not to pick on Vue, but it is probably the best by far for a one pager app like a fancy contact form or adding some dynamic stuff to existing webpages. But there are compromises being made to get to this level of efficiency in a task like that. I wonder what they are? A Toyota Corolla optimises for a different thing than a Ford 150 pickup.
So I would ask:
- how stable is the tech
- how much integration with other tech is needed for a full solution.
- Are these different items of tech from different vendors fully compatible or are there going to be some very unpleasant compromises.
- does the tech adhere to standards. If not, this will lead to compromises and conflicting workarounds. eg) using markup that isn’t 100% valid html will lead to collisions with other technologies at some point.
- what is the full scope of the foreseeable indented solution and how much friction will there be to integrate it all. Will it need state store, event/message bus, signalr, validation, video, picture editing. Do I need to have a specific [insertframeworkname] implementation/bridge to get the tech into my solution or can I just use the vanilla js one. For example, will a basic photo cropper I find on github just work as is, or does it need to be wrapped in [insertframeworkname] goo first?
Personally, if I worked in an digital marketing agency and needed to bling up pages all the time with a little dynamic magic then Vue would be my BFF. If I had to build a long term business app with lots of input fields on lots of forms then I would go for Aurelia - or Angular under duress