Developers working in JavaScript to build mobile and Web applications now have another choice of frameworks: Yahoo yesterday released Mojito, its open-source framework for mobile client-server applications. Mojito is written entirely in JavaScript, and was constructed to give Web developers more freedom of deployment.
To accomplish this, Mojito allows Web applications to degrade gracefully, with interfaces automatically tailoring themselves to the device being used. That means a Web application can offer up specific views depending on the viewing platform.
But Mojito’s JavaScript-based nature is not just about the client-side. In a move that shows Yahoo doesn’t disavow knowledge of its competition’s open-source projects, Mojito’s server-side is based on Node.js. Node.js, as you may know, runs inside of Google’s V8 JavaScript engine.
Mojito is part of the larger Cocktails project at Yahoo. Mojito sits at the top of this Cocktail stack, where it allows developers to leverage a single codebase into an application compatible with multiple connected platforms.
Ren Waldura, senior product manager for Cocktails at Yahoo, wrote in a blog post that “Mojito apps run on the client, using the client’s embedded JavaScript engine. But Mojito also runs on the server, on NodeJS. Node is great, and we love it. Node’s focus is on efficient low-level constructs for I/O, while Mojito is about providing application patterns to help you structure your code, to make it more modular, more concise, and perform better. Cool stuff, right?
“But we have a grander vision for Mojito. Think about it: having the ability to run JavaScript code on either end, we’ve built a framework for both. A framework that hides (a little, not too much) the execution site. A framework that lets you assemble and render data on the server, or, well, on the client too!”
Underneath, the Yahoo Cocktails Manhattan project allows server-side JavaScript to run inside Yahoo’s Cloud. Mojito also relies on Yahoo User Interface, which includes a bevy of interface helpers for building CSS3 and JavaScript interfaces for Web applications.