AngularJS: If HTML were built for writing web apps
angularjs.org
angularjs.org
I just love the formidable "comeback" that JavaScript has made. It has gone from being hated and patronized to become an incredibly flexible and completely invaluable tool in every web develper's toolkit. With all these frameworks and libraries - jQuery, YUI, node.js - JavaScript is becoming even more powerful and actually fun to code it.
The table is used to layout tabular data. This is a good use of tables.
Definitely has better chances with attributes than without them.
<tr ng:repeat="…">…</tr>
This guarantees that whole element will be repeated. If there were custom tags you could easily create ill-formed markup: {repeat}<tr>{/repeat}</tr>However, the standard relied on robust browser support instead of being added on as a library (here's a current attempt at this: http://code.google.com/p/ubiquity-xforms/). There was also an almost slavish adherence to XPath which was too clunky for certain uses, and finally it ended up as an unfortunate victim of the XHTML2 debacle.
All of it made me wonder if HTML and JS (with jQuery et al) were really the right tools for developing rich user interfaces, or if it was time to look at an alternatives for apps in the browser - although Flash, Adobe Air and Silverlight all seem to be highly unpalatable choices.
(as for me, I'm generally happy with unstyled well-formed XHTML and doing all the work on the server with form submits and page reloads - but that's why I'm not doing webapps for a living!)
Seems like there are a few projects filling this gap - backbone's been mentioned, there's also sproutcore.
XUL is a great little language but as I say in the blog post: XUL is designed to produce apps with a consistent look-and-feel. HTML is emphatically not (and shouldn't be).
It's tricky to design a web application language which doesn't end up with all apps looking the same.
Backbone.js does not depend on custom attributes inside the HTML, which makes it a little bit more modular than the "all encompassing" knockout and angular.
Angular.js Source: http://www.angularjs.org/ng/js/angular-debug.js
Backbone.js Source: http://documentcloud.github.com/backbone/docs/backbone.html
[Edit]: Just skimming through, you'll notice that Angular includes a custom JavaScript parser for it's JS-in-HTML attributes (Knockout.js uses eval()), as well as things like Social Security Number validation ... and it's own version of jQuery, internally referenced as "jqLite".
Honestly, though, I don't know why you'd want Objective-C. The language itself is not clearly better than many others. It's Cocoa (Touch) that makes programming on Apple's platforms so pleasant.