Custom Software Apps & SharePoint Consulting

The Microsoft Single Page Applications Approach: WinJS

WinJS LogoMicrosoft has been steadily working to improve WinJS, their implementation framework for Single Page Applications (SPA) using JavaScript.  This framework is a modern alternative to existing ASP.NET client-side infrastructure (MVC and WebForms).  At Entrance, our approach for SPA uses several frameworks: Backbone Marionette, jQuery, Underscore and Bootstrap.  If we were to look at getting on Microsoft’s bandwagon for SPA and utilize WinJS, where would it fit in with what we are doing now?

WinJS offers a suite of controls that utilize Responsive UI concepts (i.e., the layout dynamically adjusts based on available screen space and resolution).  This is a competing offering to what Bootstrap provides, so it really only makes sense to pick one or the other here.  Microsoft officially supports integration with AngularJS, KnockoutJS, and ReactJS, so while possible, it may be challenging to work with WinJS using other frameworks (e.g., Backbone, which is what Entrance uses now).  There is some information available on how to use Backbone and WinJS together, but it is limited and the integration is not officially supported.

The big switch would be to have WinJS manage the UI components, including databinding and events.  Backbone would only handle view structure and routes.  This is a large switch in terms of re-training and learning up on how all the new components work together.  Microsoft just released its latest iteration of WinJS 4.0, so it is clear there is significant corporate backing.  However, with WinJS itself still being new as a cross-platform SPA framework (prior to WinJS 3.0 it was for Windows only), I don’t think the difference in capability compared to Backbone is meaningful enough to warrant a retooling of our consultants just to use a different framework.  If Microsoft continues development of WinJS and it becomes clear that the community begins to standardize around WinJS, then it may make sense to revisit our current toolset based on Backbone.

Share this post with your friends

Skip to content