I've been using Aurelia for a month now, I thought this would be a good time to write down my experiences with the framework.
Moved teams at work today, going to be working using @AureliaEffect full time, excited and I'm digging through the excellent docs already!!— Ryan (@ryan_southgate) March 6, 2017
Coming from an AngularJS background I've developed the ability to cope with mediocre documentation. And use alternative avenues like blog posts/StackOverflow to figure out how things should be done.
I think the lack of a style guide, with what is a very opinionated framework, leaves many devs asking "Is this the 'right' way of writing this..."
Moving on to Aurelia, well - I find the docs to be much better!
There's loads in there to get you started, and for most applications they'll be just right and will serve you well. However for more complex apps, I feel they are lacking in a few areas. For example getting to grips with parts of the router, the
route-href attribute you can put on elements, is nowhere to be seen in the official docs (other than api references). I had to resort to using community driven "books" on GitHub
I think this is great as it shows Aurelia does have a good community already and there are people using it, but some of the stuff I needed to do - well, I expected the official docs to explain how to do, because it's cool stuff!!
Aside: Initially I was "hard-coding" hrefs in my views. However, when changing from HTML5 PushState to "hash-change" (non-HTML5 browsers) they weren't working. I knew I needed to create the routes given the current routing strategy, but didn't know how.
I've had a great experience of the Aurelia community so far from raising a few questions on GitHub and submitting a couple of PRs.
The community is definitely smaller than others (React/Angular etc), however this should be seen as a benefit in some respects, in that you voice will be louder and you will probably find it easier to get the "top dog's" (core team member's) time.
Community is not something you can buy, you really just have to leave it to grow naturally and nurture it as it evolves. Fostering an ethos of helping others and sharing will pay off in the end. I've been impressed at the attitude of developers in a lot of open-source projects on GitHub, just by way of how much people want to help, and Aurelia is certainly no exception.
Some people will wrongly compare the number of "watchers/stars" of different frameworks and let that influence their decision of a framework. Aurelia has smaller numbers than React/Angular, I think that's typically due to who "backs" it, obviously Google has a hand in Angular and Facebook has React. It's obviously difficult not to jump on the respective bandwagons because you recognize the names as being big and influential in the technology space.
Similarly, I see a lot of blog posts using search queries as a measure of popularity. I find this a bit worrying, I only search for framework related things when I'm struggling to do something. So should this not instead be a measure of how many people are struggling with the framework...?
I used to be very worried about needing a CLI to get to get a JS app up and running. I wouldn't call myself an old-skool dev (I've only been coding professionally for nearly 6 years), but I like just being able to include a JS file on a webpage and write some code for it.
I suppose that's why I still enjoy the simplicity of AngularJS and Vue.
However I also do enjoy the development experience of Aurelia. The CLI is definitely not something you fight against, it works with you!
I love the BrowserSync integration, it streamlines and saves massive amounts of time when developing. Just save the changed file....seconds later, the whole app has been transpiled (I'm using TypeScript) and it's sitting in the browser waiting for me to start interacting. Much better than having to manually refresh the browser. It gets even better when you open multiple browsers and stack them next to each other. Just interact in one and they all show the same thing! It's witchcraft!!
It just gets out of the way
Aurelia as a framework feels very clean and very slick. The code feels cleaner than Angular as demonstrated in this blog post.
Aurelia leans towards Convention over configuration. Whereas Angular is requiring you to be explicit. Both approaches have pros/cons, and I don't prefer either. Aurelia will allow you to configure very "internal" parts of the system. For example you can write your own custom binding syntax. These aren't immediately obvious when beginning, I wouldn't say they're hidden, they're just not on show.
I remember when I attended Rob Eisenberg talking about Aurelia at London NDC Conference in Jan 2016. He spoke with great passion about the framework and doing things "the right way", I have to say with his track record, it's a great thing for the Aurelia Community to have Rob steering the ship. And coaching others to help lead/direct the community too.
I remember Rob saying "It just gets out of your way" about Aurelia, at the time I was knee-deep in an AngularJS project and I doubted those words, after using it, I really feel that the framework isn't a hurdle to jump, but more of a tail breeze when you're cycling, just enough to notice it and help you along your way.
It'll get smaller over time
I have to admit, this is not an observation of mine, but of a colleague. He said he thinks this framework will get smaller over time, and I fully agree. Using Aurelia feels like I'm writing apps using tomorrow's technology. As Aurelia is using web standards, you can really see pieces of this framework being turned off when browsers start supporting some of the Aurelia concepts natively.
Since starting with Aurelia, I've managed to get a reasonably sizable SPA working in my day-job, including message polling, dynamic routing (still bookmark-able) and interactive charts using HighCharts. It's taken a total of 3 weeks (5-day weeks), 15-days in total, for me, a single developer to get a sizable SPA done! Going from 0 - 60 like that, I believe, says huge amounts about how easy it is to work with the framework.
As with everything, don't just take my word for it, go and use it for yourself! If you enjoy it use it, if not, then keep trying to find one which you enjoy!
The framework "Just gets out of your way"
It really is The Invisible Framework™