This blog post is a repost of an answer I wrote at programmers.stackexchange.com
Offline support isn’t hard, either. With local browser storage well supported with many mobile devices you can build truly powerful offline apps this way. Its best practice to package your external dependencies locally as opposed to using a CDN, so that your app works well offline.
When the device is online, you can easily have it hit ASP.NET/MVC, WebAPI or WCF service back ends to refresh data.
The resulting apps are really quite good, and can be distributed in the Apple and Android markets. There are already lots of apps in those marketplaces built with Phone Gap Build and other similar products, and 99% of people (including most devs) can’t tell the difference.
Obviously you aren’t going to try to build Angry Birds this way (though, with Canvas I suppose you might try), it works wonderfully well with the kinds of apps you are talking about.