TSSS — Offline Webapps with HTML & JS


TSSS — Offline Webapps with HTML & JS

There is a lot of interest lately in using JS to make web applications more interactive, even a new acronym: AJaX

So for those of you that have been asleep the last few months, the basic gist is that you make a page with a bunch of Javascript that fixes the differences between browsers to allow you to read and write XML from a server and update the current page DOM. This is useful for quickly updating the user interface without having to do a full page refresh.

Personally I think you can skip this part of the talk and instead look at this article, in fact many of the slides come from it:

AJaX on Apple’s Developer Site

The example is quite simple, has everything in a single page i.e. no javascript imports, and works on all the modern browsers. It doesn’t talk about using XSLT to transform the XML content, but many AJaX applications could use that as well.

Then they start getting into the stuff that doesn’t work everywhere. The newest version of ECMAScript (JavaScript) includes support for XML as a native datatype. This is quite powerful and was first implemented in WebLogic Workshop for doing XML data transformations and then was submitted to ECMA.

One of the things that they don’t cover is that you now need a server implementation that can both render the entire page and also allow incremental updates. If you wanted to do this all at once I would probably build it such that the XMLHttpRequests grab sections of the full render from the server using something like XQuery. I’m sure libraries for doing this sort of thing will start to appear, perhaps even from me. The maintenance of these features without merging the full render and the updates seems prohibitive except for the most static applications.

The offline portion of the talk was sort of a joke, suggesting that you download everything from the website ahead of time and storing it in DOM. I was hoping they were going to talk about technologies such as Apple’s Dashboard that uses HTMl/CSS/JS to build desktop applications.