Skip to content

Instantly share code, notes, and snippets.

@fragsalat
Created May 26, 2016 10:59
Show Gist options
  • Save fragsalat/adf50a1f1750cba04e71cd89b3d74ccc to your computer and use it in GitHub Desktop.
Save fragsalat/adf50a1f1750cba04e71cd89b3d74ccc to your computer and use it in GitHub Desktop.
This document will be used to introduce the framework 'Aurelia' to a company or tech department.
==================
Aurelia
==================
Aurelia is a next generation UI framework based on newest ECMAScript 6/7 specs.
With these framework you can create SPA (single page applications) which are highly maintainable, testable and extensible.
It follows the convention over configuration paradigm but provides the ability to customize everything to your needs.
Existing experience
-------------------
Because of the convention over configuration paradigm the learning curve is really good and you write less and cleaner code.
Therefore the application is better maintainable and the migration to other frameworks seems to be easier.
Aurelia is, as far as I know and tested, the best performing framework in terms of re-rendering speed, cpu and memory consumption. (dbmonster tests in links section)
This frameworks is highly modular written and puts each module into a own package, which lets you exchange or extend every component if required.
You even can use React or Angular 2 directives within the Aurelia templates by using existing plugins.
Aurelia suggests the MVVM architecture pattern which can be changed by providing a other ViewStrategy to create your own architecture.
By default aurelia has no 3rdParty dependencies and is conform to modern web standards.
Because the framework is new, the community is not that big like on angular 1 or react but is growing.
They have a gitter channel which is more active than any angular or react channel where you can get support within few minutes.
Aurelia is backed by Durandal Inc. company and offers a commercial support.
They want to build with Aurelia a isomorphic framework by abstracting required parts like DOM, logging and history with modules like the "page abstraction layer".
Since a month they have a weekly release cycle to publish bug fixes and improvements.
The framework is currently in late beta phase and in preparation for release candidate.
Aurelia provides with a starter kit which covers samples using ECMAScript 2016, Typescript, asp.net5 and webpack.
These starter kits comes with sample unit tests using jasmine + karma, end 2 end tests using protractor and finished build, test and package process using gulp.
As far as I know Microsoft is working on a wizard to create Aurelia projects in Visual Studio with asp.net.
Also there are already 2 Curses available on Pluralsight.
When to use
-----------
I would recommend Aurelia if:
- you plan to build a web application which consists of more than one page.
- you want to have freedom without having additional work for planning and implementation of architecture or other things like on React.
- you want to create an application following and using newest technologies by still supporting many browsers (up to IE9).
- you build an high performance application with many elements and heavy rendering for instance for big data.
Pros
----
* highly extensible via the plugin/feature implementation, available lifecycle hooks and modular architecture
* most performing framework on market (better than react or angular 2)
* the only framework with commercial support
* no 3rdParty dependencies
* modern web standard conform
* framework with cleanest, most intuitive and fewest code because of convention over configuration paradigm
* newest es6 features because of babel
* small sized framework
* highly active gitter channel
* Aurelia targets a isomorphic framework by abstracting platform components
Cons
----
* No (big) official known websites using Aurelia
* Still relatively small community
* Gitter channel is bad for google research (they plan to build a forum)
Licensing
---------
MIT License with Copyright to Durandal Inc.
https://github.com/aurelia/framework/blob/master/LICENSE
Links
-----
Website: http://aurelia.io/
Repository: https://github.com/aurelia
Team: https://github.com/orgs/aurelia/people
Aurelia core modules: https://github.com/aurelia/registry/blob/master/core-registry.json
Aurelia plugins: https://github.com/aurelia/registry/blob/master/plugin-registry.json
Aurelia advantages: http://aurelia.io/docs.html#/aurelia/framework/1.0.0-beta.1.2.4/doc/article/what-is-aurelia
Courses on pluralsight:
https://app.pluralsight.com/library/courses/aurelia-fundamentals/table-of-contents
https://app.pluralsight.com/library/courses/building-applications-aurelia/table-of-contents
Aurelia apps in production:
http://elee.menu/
https://gist.run/
Performance comparison using dbmonster:
Angular1: http://mathieuancelin.github.io/js-repaint-perfs/angular/opt.html
Angular2: http://mathieuancelin.github.io/js-repaint-perfs/angular2/
React: http://mathieuancelin.github.io/js-repaint-perfs/react/
Aurelia: http://jdanyow.github.io/aurelia-dbmonster/
Aurelia + Virtualisation: http://martingust.github.io/aurelia-dbmonster/
@atsu85
Copy link

atsu85 commented May 26, 2016

One more note: starter kits are simple examples to get the feeling of the framework (if i remember correctly, then it does on-the-fly transpiling), but if You want to start a new project, see the subprojects in the official skeleton-navigation repository (systemjs vs webpack loaders; ES6 vs TypeScript languages, ...) where build pipeline, including unit and e2e tests and linting is already set up.

@riddla
Copy link

riddla commented May 31, 2016

You got a typo: [...]'2 Curses available'[...].

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment