I am experimenting with PhoneGap for a couple of projects that I am currently working on. PhoneGap is a native mobile app packager which basically converts a html5/js based site into an app that will run on mobile phones and can be distributed via app store/market.
Since PhoneGap merely leverages existing support for html5 and javscript in the mobile phone you have pretty much the same issues as when developing a regular mobile enabled web site. You have to support different mobile phone features, different resolutions/screen sizes, the implementation of HTML5 is different for each platform and so on. There are a few things that are slightly easier since we know that the phones will have certain basic capabilities and we also know which platform our app has been packaged for. But since we are trying to make our app actually behave and look like a regular app we want to implement some of the platforms own look & feel and follow the recommended UI guidelines for menus and ui widgets.
I broke down the different feature sets that I have found in mobile frameworks in the following image:
I have looked at a couple of frameworks most of which will solve multiple areas in my break-down.
jQuery mobile : UI widgets, UI Navigation, Rest /Ajax
JQTouch: UI widgets, UI Navigation
Sencha touch: UI widgets, UI Navigation, MVC framework
Backbone.js: MVC framework, Databinding, Dataaccess
Knockout.js: MVVM framework, Databinding, Dataaccess
In addition to the JS framework you also need a HTML/CSS framework that will allow you to actually accomplish the design you are aiming for but that’s a separate topic.