Aurelia 0.10.0 Release & Status

Posted by AureliaEffect on March 25, 2015

Today, we've got a major set of release for Aurelia, fixing many issues and adding new and more powerful features to the lineup.

Changes

We've updated many of Aurelia's libraries to newer versions. As part of this series of updates, we've made several breaking changes. The details follow this post, but here is a brief summary for those who need to update their code:

The Loader now maintains a registry of loaded views along with knowledge of their dependencies. Views no longer use the <import> element for importing view behaviors and other resources. You must now use the <require> element. This change was made in order to enable future support for IE9.

The Default Loader now uses system.js and require.js based loader plugins to load views. This ensures that all views will have their paths resolved by the module system. This fixes many scenarios, including views loaded from external plugins. There is no more baseViewUrl setting and if you used baseUrl this should also be removed. Instead, in your config.js map the "*" path to "dist/*.js".

We removed the selected-item behavior and replaced it with a new more powerful and more consistent mechanism for binding to select elements with value.bind.

Enabled two-way binding of contenteditable elements

Templating now has a simplified and improved resource loading pipeline with everything going through the native loaders. Global resources are no longer order dependent and plugins can be organized in any way.

You can now specify views for a component more easily by simply re-exporting them via the view plugin. You can also do this by exporting a ViewStrategy.

Bind styles with interpolation by using the new css property.

Binding to innerHTML and innerText is now supported. You can use the new sanitizeHtml value converter along with this.

The aurelia.withResources() api has been replace with aurelia.globalizeResources() which now accepts a module id. You can also rename global resources with the new aurelia.renameGlobalResource() api.

The aurelia-main attribute has been removed from bootstrapping. There is now only one attribute aurelia-app. If no value is provided the framework will use the default configuration and load your app.js/app.html files as your root. If a value is provided, this is assumed to point to a configuration module that exports a configure function. This function should configure the aurelia object and start the framework.

New apis have been added by the bootstrapper for simplified configuration including aurelia.use.standardConfiguration() and aurelia.use.developmentLogging().

The HttpClient API has had a major overhaul. Please see the docs and/or unit tests for how to use the new API.

If you want to update to all the new bits, the easiest way would be to re-run jspm install for each top level aurelia library (the libraries listed in the jspm section of your package.json file). This is needed because of the non compatible version change due to breaking changes in several libraries. If you are unsure how some of these changes play out, you can have a look at the
skeleton-navigation
repo which has been updated based on this release. You can also look at our new
skeleton-plugin
repo to see how to write pluggable libraries for aurelia.

What

This release contained some breaking changes. The next couple of releases will also. We are attempting to get this all out of the way ASAP. The next set of changes will involve unifying ES7 Decorators and our metadata as well as simplifying behaviors. After that, we've got some more work to do on the router and possibly http.

The Aurelia team is working very hard and things are progressing well. We've got new plugins for animation and validation on the way soon, with demos coming. Our bundling solution is about 50% complete and work on the CLI is progressing as part of that. We've also got our benchmarking infrastructure almost ready and we will begin serious performance optimization soon.