Aligning Ember.js with Web Standards
Wow! This takes me back! Please check the date this post was authored, as it may no longer be relevant in a modern context.
This March I was delighted to present at EmberConf 2015, after a great data-layer talk by Dan Gebhardt (@dgeb) and before a heartwarming community talk by Jamie White (@jgwhite).
My own presentation was on web standards- How they are changing, and what it means for Ember.js and Ember applications.
While researching for this talk, I used several excellent resources written and organized by other developers. If you are interested in learning more about ES2015 (ES6) features, the standards process, or JavaScript in general I highly suggest these links:
- Alex Rauschmayer’s blog 2ality, especially:
- The unofficial HTML version of the ECMAScript Language Specification
- Rick Waldron’s (@rwaldron) notes from TC39 meetings
- The TC39 Ecma262 repo, which contains a list of current ES proposals under discussion
- The TC39 Process document
- Not born to die, a blog post about Babel (formerly 6to5) by James Kyle (@thejameskyle)
- What is a Polyfill? by Remy Sharp (@rem)
- The ECMAScript compatibility table, including browser and transpiler implementations.
As with any talk about the current state of the world, parts of it quickly start becoming out of date.
- I draw a pretty simplistic line between working groups and standards committees in my talk. For the point of narrative and understanding how we (the web) got here it is illustrative, but these are very rapidly changing organizations with intertwined and political relationships. I encourage you to review the meeting notes, charters, and process documents of a group if you want a good understanding of exactly what they bring to our complex, modern web.
- As of ng-conf, it looks like several decorator/annotation proposals being discussed by TC39 may have been resolved. The syntax would be:
@attr('gearsCount')
@attr('wheelsCount')
class Car {
constructor(gearsCount) {
this.gearsCount = gearsCount;
}
@dependsOn('gearsCount')
get isModern() {
return this.gearsCount > 3;
}
}
var car = new Car(3);
car.isModern; // false
Decorators before the class apply to the class, and before descriptors (properties) apply to the following property.