Why you should choose Aurelia? Starting a new project is always difficult – especially, when your task is to create a new website application. You have to decide between using an old frontend technology you are familiar with and something new available on the market you need to check out.
Each possible decision has it’s pros and cons. Sticking to an old technology can save you some climbing up the learning curve – you will start quicker but the overall development process can be slower. On the other hand, new frameworks very often provide a better approach to the frontend world problems, as they are built upon successes and failures of previous generation libraries.
Our team – Parkanizer – faced a similar dilemma. We were about to start new website application but we had very little time to do so. We had couple of possible choices:
1. We could use Angular 1.5 as we did in previous websites.
2. We could use Angular 2 hoping that our experience from Angular 1.5 would be helpful.
3. We could use React as I had participated in React workshops and I had some theoretical knowledge about it.
4. We could use Vue.js as one of our team members played a little with it at home.
We’ve spent hours debating what to do, and finally – we decided to use Aurelia.
Why you should choose Aurelia?
Why Aurelia? – one can ask. That was not a random decision as it may seem at first glance.
First of all – it was created by Rob Eisenberg – the author of Caliburn.Micro – my favorite MVVM framework for WPF desktop applications. As I have strong background in desktop application development I could see plenty of similarities between those two frameworks: bindings, converters and set of reasonable conventions.
Yes, convention over configuration paradigm – which is heavily utilized in Aurelia – was second factor which convinced us to use the framework. Normally, during backend services development I perceive conventions as auto-magic which I don’t like – as they obscure logic flow and make it more difficult to understand the code. But conventions in UI development is a whole different story. They allow you to focus on your domain rather than on all structural code you have to normally write to glue together views with view-models etc.
Another benefit of using Aurelia is how clean it is. View model is just a JS class – there is no redundant noise code. Html view can simply consume exposed functions and properties. More complicated features – like, for example, dependency injection – can be applied with decorators. At the beginning we started working with Aurelia using ES 2016, but during the process we decided to migrate our code to TypeScript. It was nice surprise – how easy that was. We could perform it gradually.
Unfortunately, we had some problems too. Our major fear before we decided to use Aurelia was a modest community gathered around it – at least in comparison to Angular one. As we had to learn new framework from scratch, we were forced to dig through the documentation or even through the source code quite often – there were very few related topics on StackOverflow – sometimes we truly felt like early adopters. We found couple of bugs in the documentation – but as it is an open source project – we did fixed them (our PRs were merged very quickly).
We were quite happy about provided tools – `au run –watch` is really comfortable to work with. All necessary gulp tasks are predefined when you are starting the project with `au new` so we were not forced to spend couple of days in the beginning of the project working on infrastructural, boring, code. The only problem with tools was how slow they were – at least at the beginning. But everything changed after “Early March Mega Release” – tools performance was vastly improved. I really like this agile approach – provide minimum value for the customers at the beginning, and then gradually improve the product.
So why Aurelia?
Because it makes possible to provide valuable product really quickly. Learning curve is pleasant – basic concepts are intuitive and easy to grasp and yet Aurelia stays flexible enough to allow you to implement whatever complicated flow you need. Of course, we had couple of bad moments – like problem with caching `app-bundle` and `vendor-bundle` files – but we didn’t face anything we could not cope with in sensible time. I can recommend Aurelia to everyone who are looking for modern, reasonable framework to start new project with.