Bits and pieces of AngularJS 2.0 are starting to surface: The design docs are out there for everyone to read, and there are initial implementations available for change detection, logging and profiling, templating, zones, type assertions, and the HTTP client. These are exciting times for an Angular developer!
I like how these components are being developed as independent modules in independent repositories. This makes it possible for app developers to mix and match Angular libraries with other frameworks and tools, whereas Angular 1.x has been much more of an all-or-nothing proposition.
One of the new components I find most interesting is the dependency injection library at angular/di.js. It is the library that will power dependency injection in Angular 2.0, but it is also a standalone DI framework that can be used in non-Angular contexts, enabling some of that mixing and matching.
I've been playing around with AngularDart, the up-and-coming Dart web framework from the Angular team. Not only because we have a Dart Flight School event in Espoo this weekend, but also because it's an interesting piece of technology to me as an AngularJS developer: Many of the ideas and features that will eventually ship with AngularJS 2.0 are already in AngularDart today.
In this article I'll talk about a few of the observations I've made about AngularDart, mainly comparing it to AngularJS. For a prior article about similar subjects, do take a look at Victor Savkin's excellent "AngularDart for AngularJS Developers".
There are three different mechanisms for watching a value on an Angular scope: Reference watches, collection watches, and equality watches. The difference between the three is in the depth in which they watch their values.
Choosing the most appropriate watch mechanism is important, not only because the three mechanisms behave differently, but also because they have very different performance characteristics.
This short article describes the differences between the three watch depths.