Aurelia: A Product of Durandal

Introducing Aurelia

Introduction

Aurelia

Aurelia


aurelia

Introducing Aurelia

Posted by Aurelia on .
Featured

aurelia

Introducing Aurelia

Posted by Aurelia on .

I'm totally stoked!!! Why? Because I finally get to share Aurelia with the JavaScript world. What is it you might ask? It's a next generation JavaScript client framework unlike anything else available today.

Cut to The Chase

Several months ago I left the Angular team to return to my own framework. I've been working relentlessly to bring it to you as soon as possible and as a result, today I'm announcing the early preview release of Aurelia. You can get started building apps now! You won't be alone. We're already working with companies who have adopted the framework...and they love it!

What's so special about Aurelia? Why should you take interest? Here's a few tidbits:

  • Aurelia is written with vanilla ES6 and ES7 but transpiled and polyfilled to work on today’s Evergreen browsers. It may just be the most forward-thinking framework you've ever seen.
  • Code is highly modularized, and comprised of mostly simple, small libraries. This allows several fundamental usage scenarios outside of what most frameworks can accommodate:
    • Use the entire framework to build apps.
    • Use individual libraries to build traditional web sites.
    • Use some of the libraries on the server with NodeJS. i.e. DI.
    • Use it as a set of building blocks to create your own custom framework.
  • Aside from polyfills, Aurelia has no external dependencies.
  • Its APIs have been designed carefully to be compatible with any modern transpiled language such as TypeScript, CoffeeScript and AtScript (including type and annotation support when present). Naturally, ES6 and ES5 work great too!
  • Parts of Aurelia have a MicroJS feel to them. Several libraries are very small such as event aggregator, dependency injection, task queue and HTTP client.
  • Aurelia has a first of its kind "adaptive" databinding engine allowing rich two-way databinding between vanilla JavaScript and DOM (including Web Components). When binding to an expression, the binding system can select an appropriate observation strategy on a per object, per property basis. It can use Object.observe and Array.observe if present, getters and setters if not and dirty checking as a last result fallback. The system is pluggable and will let developers teach it new ways of observing properties so you can easily plug in custom model/view-model libraries such as Knockout, Breeze, Backbone, etc. which may have their own mechanism for storing properties and raising change events.
  • Leverage an extensible HTML compiler to customize your markup. There are three “categories” of extensions out of the box, for the most common scenarios, but you aren't limited to those. Here's what you get when starting out:
    • Custom Elements - Create re-usable custom elements by simply creating a class and providing some simple metadata. Basic conventions make the process very streamlined. Easily separate your element’s view and view-model for maintenance, testing, etc. Optionally leverage Shadow DOM and content selectors with native support and a performant fallback.
    • Attached Behaviors - Create re-usable “behaviors” which can extend existing HTML elements with new functionality. They are attached by setting custom attributes in HTML. To create an attached behavior, just write a plain JS class. Basic conventions make this effortless.
    • Template Controllers - Create new mechanisms for rendering templated UI. A template controller is a class that can dynamically create UI and inject it into the DOM. Key examples of this are the typical if and repeat behaviors.
  • Aurelia uses simple conventions to eliminate boiler plate code. Naturally, you can write your own conventions or override conventions explicitly on a case-by-case basis.
  • A core feature of the templating language is dynamic UI generation. Aurelia’s compose custom element lets you do ad-hoc UI generation by composing models, views and view-models on the fly based entirely on runtime data!
  • Whether you are creating custom elements, attached behaviors or data-driven screens...Aurelia has a consistent mechanism for dependency injection, databinding, DOM lifecycle events and navigation flow.
  • Aurelia has an advanced client-side router, based on Durandal 2.x’s router, but greatly enhanced with much richer support for child routers and an improved screen activation implementation.
  • Aurelia is the next generation version of Durandal to which it bears a strong resemblance but improves and extends its capabilities.
  • There is a direct migration path for Durandal 2.x users as well as Angular 1 and 2 users. We've successfully migrated some projects already and we'll provide docs to help you too.
  • Aurelia targets Evergreen Browsers only. However, some of our early adopters have reported that things appear to be working even on IE9...

Durandal Inc.

Aurelia isn't just another framework. It's an official product of Durandal Inc., a tech startup dedicated to advancing rich web app development by creating powerful libraries, frameworks and tools.

We have a long term vision.

Aurelia is the first step in realizing that vision. We believe it's critical to start with a completely free, open source application framework. We want to enable anyone to build amazing apps for many years to come and to know that they are building on a platform that isn't just here today and gone tomorrow. We're investing heavily in both building and supporting Aurelia as well as creating additional offerings: open source, free and commerical. We're truly excited about what's in store!

Team and Community

This isn't one man's weekend project. There's a dedicated company and team behind Aurelia. We've put together a collection of passionate developers both from inside Durandal and out in the community. We're not only building Aurelia but we're already dogfooding it by building real apps and plugins with it.

What is being built?

There's already apps in development in both the energy and telecom spaces. Early adopters have started work on integrating with Breeze, Knockout, Kendo, jQuery, Bootstrap, Foundation, ESRI, DOJO and more. There are members working on touch libraries, custom widgets and platform-specific tooling such as Visual Studio integration and Sublime packages.

What about training, consulting and support?

We've partnered with several companies to begin providing training and consulting around Aurelia. You're going to begin seeing workshops show up at major conferences this year and soon we'll have virtual training available as well. Need commercial support? We'll be providing that too.

Get Started

Aurelia isn't done yet. We've got a few more features to add and a bunch of work around performance and testing. But it's far enough along right now that you can build just about any app you want...and probably do it easier and faster than with any other library today. We're really excited about the developer experience and hope you will try it out.

Don't have time to read documentation? No sweat. I prepared a nifty video for you...

Stay Up to Date

Our new site has some preliminary docs to help you get started and play around with the framework and its libraries. We're working on something quite a bit more extensive for the future though. If you want to learn more about Aurelia now, I would encourage you to subscribe to the Durandal company blog. Our blog will feature content written by core dev team members each week ranging from Aurelia usage to patterns and practices. It's a great way to keep up with the latest developments and not only learn about Aurelia, but also modern JavaScript development in general.

In the next few months I'll be appearing on several podcasts, so you'll have an opportunity to hear a lot about Aurelia that way. If you have questions or topics you'd love to hear covered on those shows, feel free to post ideas below. I'll also personally be speaking in Florida, Texas, Georgia, Canada and Sweden over the next few months. Other community team members are submitting talks now as well.

Conclusion

I'm really excited about Aurelia. We're just getting started, but we've got a lot planned. We'd love for you to take the early bits for a spin, send us feedback or get involved. I think you're really going to like it and I look forward to seeing what amazing things you'll build.

Aurelia

Aurelia

View Comments...