Why I'm Going to Use Aurelia
Aurelia is the new kid on the block with just over a year in the industry. Today, I talk about why I will be using Aurelia on new client-side projects.
If you've been following me for a while, you know that I went to Codemash in 2015 and said I would focus on AngularJs as a way to move forward towards a client-based MVC approach.
With that said, a month after Codemash, I heard about the ruckus about AngularJs 2.0 being backward compatible with version 1.3.
My thinking was I didn't want to dig into a JavaScript framework, learn it, and then realize I would have to go back and rewrite huge pieces of code to make it work with Angular 2.0. I've been burnt before so forgive me if I'm a little slow adopting newer frameworks.
So I decided to "sit on the bench", grab some popcorn, and watch the outcome of what would happen with AngularJs even though I said I would pursue Angular this year. I also didn't have a project that could justify learning a new JS MVC framework.
Enter Aurelia
Around March, I started hearing about another JavaScript MVC framework called Aurelia by Rob Eisenberg (@EisenbergEffect).
He was one of the developers who worked on Angular 1.3/2.0 until there was a...umm....disagreement and he left.
Then he decided to create Aurelia. It was created a little over a year ago and while I said I wouldn't adopt "newer" frameworks, this one seemed to have potential.
Since then, I've been taking notice of what it's capabilities are as a JavaScript MVC framework and I must say I am impressed.
Why Aurelia?
Angular has been around since 2009 and is really a mature MVC framework for the client-side.
So why would I decide to look at this relatively new framework as opposed to hopping onto the Angular bandwagon?
- I recently saw the blog post called Aurelia Beta Week - Day 1 talking about the release of Aurelia's beta. The video he did with Channel 9 made my jaw drop. I was extremely impressed with how everything fit together with simple "HTML modules" and how Aurelia didn't get in the way of what you wanted to accomplish. It could even do custom data binding with Angular syntax.
- Aurelia uses ES2016. ES2016 introduces a better way to code JavaScript using object-oriented techniques, modules, arrow syntax (think lambdas and LINQ in C#), collections, and promises just name a few of the features. Aurelia is already built using these features in ES6. Wow!
- Performance. It seems to really scream on the client.
- It can use TypeScript, but it's not tied to it.
- I've talked to a number of developers about Angular and they've said they love it! Then I ask them about the routing and it's been almost unanimous..."oh, well, yeah, that could be a little better."
- UPDATE: Rob Eisenberg did a comparison against Angular and React. His answers show vision and promise for Aurelia.
- UPDATE: It uses less code than AngularJS.
- UPDATE 2016-09-28: Rob Eisenberg answers your questions on Aurelia.
As you can see, there are quite a number of reasons that I've collected while "sitting on the bench." I've tinkered a little bit with Aurelia, but again, I haven't had a need to create an ASP.NET MVC with a JavaScript MVC framework.
However, I may have a need to use Aurelia.
One Reason For Me To Use Aurelia
Again, if you've been following me, you know that I tried to make a mobile web application using just web technologies in my ASP.NET MVC: Optimization Series. I didn't think there was a need to learn a client-side framework and challenged myself to make a fast, responsive, strictly web-based application.
Then I went to Codemash 2016 this year and attended a workshop on Building a Hybrid App.
In the workshop, we created a simple calculator on a single HTML page using Apache Cordova. I asked the presenter how you could create a multi-screen hybrid application.
He replied, "That's where the JavaScript MVC frameworks come into play." Frameworks like Angular, Ember, Meteor, and Aurelia are meant for these types of applications.
Again, while I don't have a need to create one yet, I may convert my existing Codemash app into a hybrid as a demonstration to my readers (if anyone is interested, post a comment).
One. Last. Push.
The final push for me with Aurelia came when I read a recent blog post titled Aurelia Bug Fixes, More Docs, and New Skeletons!
In this post, they released two new skeleton projects for Visual Studio users.
WhaaaaaT?!
Both skeletons use ASP.NET MVC with Aurelia, but one uses Aurelia with ES6 and the other one uses Aurelia with TypeScript.
What better time to start looking into Aurelia!
Now that I have a solution, I need a problem! ;-)
UPDATE: I'm started my journey into Aurelia by converting my mobile web app found here into an Aurelia app. I wrote about my Aurelia journey in a series of posts.
Conclusion
Over the next month or so, I will be writing about my experiences with Aurelia and taking you with me on my journey to find out how easy (or hard) it is to build JavaScript hybrid apps.
Has anyone else used Aurelia yet? Is it good or bad? Post your comments below.