I am sure you have noticed the growth of Javascript and the number of great posts on the Salesforce blog outlining its use cases with the Force.com platform. The ever expanding global Javascript community have produced some great frameworks and libraries that have made our lives easier and our end users happier. If you are a fan of NodeJS like I am, then you can build the whole server-side and client side logic in Javascript without even touching any other programing language. On a day to day basis Javascript use cases vary based on the kinds of projects you're working on, if you're building a relatively simple Visualforce page then JQuery, some elements of Bootstrap or JqueryUI might be all you need, but if you are tasked to build a single page application with a completely bespoke UI or a dynamic module then something like Backbone, AngularJS or EmberJS with full use of Bootstrap or JQueryUI would be a better fit.
When you look at mobile Javascript development and when I mean mobile I am talking mainly about hybrid applications, the scene is a bit different with players like Sencha Touch, Corona and Appcelerator Titanium offering great all-in-one mobile frameworks with their own SDKs. And then there are JQuery Mobile, JQtouch, KendoUI, Ratchet and Lungo amongst others that I would consider as manly UI based frameworks, at least thats the part I usually leverage from them, this bunch gets really interesting when you combine them with one of the previously mentioned Javascript MV* frameworks and add Phonegap to get access to your camera, gps and other phone features. On the other hand, if you want to be really creative and build a completely custom UI with your own CSS then frameworks like Zepto.js and The-M-Project can be your companions on the Javascript side. I personally prefer mashing things up instead of going with the all in one mobile frameworks as it gives me a bit more freedom, makes things lightweight and allows reuse of code across desktop and mobile.
There is a lot of chatter currently happening around the performance of HTML5 mobile apps against their native counterparts. Sencha Touch guys have produced a great video showing off HTML5 performance potentials that I would like to recommend to anyone who has not seen it already. Additionally there is a great video from the lead LinkedIn engineer explaining their choice of technology on their mobile app. There are some interesting workarounds in the wild that can help to improve your HTML5 based mobile app performance like leveraging your device GPU with CSS, that you can read more about in this post here. HTML5 is great at solving the mobile device fragmentation issue, but there is still some way to go to fill in the gaps in the range of HTML5 app features supported by the different mobile browsers.
If you are someone who has followed the Javascript world for some time you might be aware of all the different frameworks and libraries out there and what works best for you or you are most comfortable with. For someone who is just starting the choice can be a difficult one when you are trying to decide what framework you should start off with and what works best with what. You can always google around and find posts comparing the popular frameworks like this one here, but from my experience nothing beats playing around with a number of them and making your own decision with what you're most comfortable with. When you have decided what frameworks to use and you have completed some tutorials, a great way to understand the application structure is by looking at boilerplates where people usually combine a lot of useful best practice techniques and patterns.