Experienced web developers use MVC frameworks not because it is an interesting thing to do, but because it is the proper way to build a web application from scratch. Instead of using jQuery and a few other plugins, you can just use a Model-View-Controller framework so that you won’t get as a result a scrambled code within an overgrown file and zero capability to find what you are looking for in it.
The way MVC frameworks work is by organizing the concerns in an application into models, views, controllers. The frameworks don’t always respect this structure, an example being Backbone which adds the responsibility of the controller in view, but is the basic way for MVC frameworks to work.
Like I said in the first paragraph, starting a web application from scratch may lead to cluttered code and also you may end up reinventing the wheel and writing features that are already in some of these frameworks. Because time is really important for everyone you can skip remaking what others have done and start using a framework like the ones presented below.
Backbone.js gives structure to web applications by providing models with key-value binding and custom events, collections with a rich API of enumerable functions, views with declarative event handling, and connects it all to your existing API over a RESTful JSON interface.
Backbone, Ember, AngularJS, Spine… the list of new and stable solutions continues to grow, but just how do you decide on which to use in a sea of so many options?
SproutCore applications move business logic to the browser so they can respond to your users’ taps and clicks immediately, avoiding an agonizing roundtrip across often intermittent network connections.
As web application users go increasingly mobile, applications can no longer depend on reliable connections to a remote server to do the heavy lifting.
It is a collection of common design and implementation patterns found in the applications that we have been building with Backbone, and includes pieces inspired by composite application architectures, event-driven architectures, messaging architectures, and more.
Geddy is built on the same MVC principles that many popular frameworks are based on. Every Geddy app has its models, controllers, and views as well as config files and routes.
PlastronJS is an MVC library which uses the Google Closure library for use with the Closure Compiler. I’ve decided to call it Plastron after the name of the underside of the turtle to mimic names of frameworks like Backbone and Spine but also because it’s a good base to build upon.
PlastronJS though is not just a MVC framework, it’s the start of an application framework. I’ve decided to include a mediator and a store with the package which will hopefully help in the construction of medium to large size applications.
Both Knockout.js and Backbone.js have their strengths and weaknesses, but together they are amazing! With Knockback.js, you can use the strong ORM provided by Backbone and create dynamic views using Knockout bindings.
Backbone.stickit is yet another model-view binding plugin for Backbone. Like the other plugins, Stickit will wire up bindings that will keep form elements, innerHTML, text, and attribute values bound with model attributes.
The main idea behind the MVC pattern is to separate the data (model), the user interface (view) and the logic of the application (controller). They must be independent and should not know about each other in order to increase the scalability of the application.
soma.js is providing tools to make the three parts “talks” to each other, keeping the view and the model free of framework code, using only native events that can be dispatched from either the framework of the DOM itself.
The Closure Library
It guides you to successfully completed projects by promoting best practices, maintainability, and convention over configuration.
rAppid.js allows you to encapsulate complexity into components which can be used beside HTML. Therefor rAppid.js uses a Shadow DOM, which is rendered as valid HTML in the document body or a specific target. It is completely extendable and works well with other libraries.