Let me state at the outset, I have no intention to compare “JavaScript with HTML” and “C# with XAML” styles of building Windows Store Apps. This is a choice you have to make based on your skillset, reuse considerations (i.e. do you plan the target the app for Windows 8 and Windows Phone 8 OS), whether the functionality you are targeting for the app is already available as a web app or not, etc.
For last several years I have focused on the web technologies, starting with server-side technologies but lately client-side single-page style apps. So the h5c3js model is more suitable based my skillset. (Additionally, my knowledge of XAML is limited to WF serialization format.)
This model, which allows HTML-based native Windows 8 apps, is innovative in my opinion and I applaud the folks responsible for the language projection in Windows RT.
JavaScript is the one of the more popular programming languages (and no… I am not just basing it on the RedMonk survey alone). This makes it easy to find folks to staff projects.
With VS 12, Microsoft has made great strides towards supporting HTML5 and JavaScript: debugging, IntelliSense (not limited to WinJS but extensible to third-party libraries as well), etc. Lately, I have been using TypeScript, which provides for a great experience. Async/Await is great, but WinJS Promise makes asynchronous programming in JavaScript a breeze.
I can use my favorite JavaScript frameworks including jQuery, KnockOut, Backbone and Bootstrap — with some caveats, of course, but largely usable. For additional information refer to this BUILD 2011 talk.
I can tap into an ever-growing list of JavaScript libraries. Just yesterday I ran into the this cool JavaScript visualization library that The New York Times developed (and open-sourced) for the US 2012 election coverage.
I was able to reuse this library in my HTML-based Windows Store app:
I can use CSS design tools that most web designers are familiar with.
Advances in CSS such as transitions, animations, transforms, gradients, SVG are at a point where one can accomplish most (if not all) of the things one can do in XAML.
I would like to hear about your experiences of course, but we have had some success in convincing customers that their web-based LOB apps can go native, and in the process, make their users more productive. Needless to say, if a web version of the app already exists, it is easier to get a h5c3js-based Windows 8 Store App going.
If the above reasons are not good enough, Kraig Brockschmidt’s (author of the OLE “bible”) delightful 800+ page book is a reason enough.
All that said, there are a few challenges one has to contend with.
- Clearly any code that relies on Windows RT is limited to Windows 8 Store Apps.
- There are differences in gesture support across browsers: WebKit vs. mspointer. (Although Microsoft just submitted pointer events code to WebKit.org.)
- Differences in HTML CSS.