Tools of the Trade: Web Development Frameworks that the Pros Use
New web development frameworks, promising rapid development and easy deployment, are sprouting out at a more rapid pace than you can keep up. In the last article, we looked at the various factors you'd have to consider when deciding on a framework. Today, we are going to look at the various frameworks available for each facet of web development.
In this current day and age, pushing out a finished, polished application well before your competitor is key. Coding everything from scratch, excluding even the mundane things, can be extremely time consuming and makes the developer spend time reinventing the wheel, time which would rather be spent implementing new features or tightening up the code base. This is where web development frameworks come in.
Server Side Frameworks
Server side frameworks are the one doing almost all the heavy lifting behind the application. They handle almost every aspect of the application right from URL handling to database access. You have a variety of options for each platform. For the sake of brevity, we'll look at only the most popular ones today.
CakePHP is a very popular PHP framework inspired by Ruby on Rails and lets you develop, maintain and deploy applications with ease.
This framework makes use of the MVC pattern and has a lot of must have features including ORM, scaffolding and URL routing. The built in libraries are pretty expansive and include helpers for generating RSS feeds and HTML elements.
There is little to no configuration needed to get it up running and has an excellent community and detailed documentation behind it.
CodeIgniter is a PHP framework built on the tenets of simplicity, speed and a small footprint and as such is among the smallest PHP libraries in terms of the total footprint.
Among the frameworks which are built on the MVC pattern, CI is the easiest to learn. If you are a beginner PHP programmer, CodeIgniter would be the best place to start with.
Since it aspires to be as small as possible, the libraries aren't as full fledged as Cake but the extremely thorough documentation and the very friendly community more than make up for it.
Kohana is a fork of CodeIgniter intended to work only with PHP 5. Kohana is completely community driven and every modification is thoroughly discussed and vetted with in the community.
All the positive aspects of CI carry over here except that the documentation can be relatively lacking. However it has a thriving community behind it you can turn to if you run into errors.
Zend framework is more of a glue framework in that things aren't as tightly coupled as in other frameworks like RoR or CakePHP. As such it also gives you a lot more control.
This framework boasts of one of the most complete collection of utility classes to leverage in your application. But since this is a collection of classes than a proper framework, you'll be looking at lots of configuration to make it work. If you are thinking of starting off as a PHP programmer, this isn't the first framework you should try.
Having said that, it has excellent documentation and a very large community behind it.
Symfony is yet another very popular, feature packed PHP framework. It provides a solid core and ships with a number of third party libraries to fill in the blanks.
This is marketed primarily as an enterprise framework and has solid documentation and a thriving community to help you.
ASP.NET allows you to leverage the MVC pattern through ASP.NET MVC. It lets developers use the accepted MVC pattern in their applications. Or if you chose to, you can completely ignore MVC and use the way you'd normally want to.
It ships with a very impressive set of features including libraries for code generation. It also has very thorough documentation and a welcoming community behind it.
Ruby on Rails
Ruby on Rails is a framework for the Ruby platform and was created by David Hansson whilst creating Basecamp for 37Signals. Ruby on Rails has gained incredible growth ever since it was released.
Ruby's incredible growth can be attributed to ease of development and rich feature set. Configuration is generally minimal to nothing. It has good documentation and a growing community.
Django is a web development framework based on Python and is amongst the most robust one on the Python platform.
Django ships with an extensive library containing tools for caching, serialization, authentication. It even provides a simple administrative interface based on your models and controllers. Its URL rewriting mechanism is a little different in that it uses regular expression to resolve which controller it needs to use.
It has extremely thorough documentation to back it up along with a helpful, polite community. A beginner Python programmer will take to Django very easily.
Similar to Zend, this is a very loosely coupled framework which glues a number of third party libraries to provide functionality.
In Pylons, each and every aspect can be switched out with the one you like. Everything from it templating language to its ORM can be switched out with minimal fuss.
With respect to features, it depends directly on the individual components you pick for your project. Documentation can be relatively lacking and the community is a little smaller too.
Similar to Kohana and CodeIgniter, Turbogears is built on top of Pylons. It shares the same pros and cons as Pylons.
As with Pylons, every component of the framework can be replaced with one of your own choosing. Currently it only uses Pylons for its controller component.
jQuery is an extremely popular library which focuses primarily on DOM manipulation. It has an extensive API encompassing a range of functionalities from DOM traversal to AJAX support.
It has very good documentation with a plethora of tutorials, screencasts, references and books for you to go through. The community is pretty large and very helpful.
Prototype is among the oldest JS libraries and as such is very mature and stable. It ships with Ruby on Rails and as part of the standard OS X installation.
It provides a clear API for all of the functionality it exposes and has clear documentation to back it all up. Prototype also provides various methods through which you can write clean class based code. Prototype handles everything from DOM manipulation to AJAX to providing a number of utility methods.
It provides a robust class creation system just like Prototype and just like the others, it provides a coherent API for all the functionality it provides.
The documentation can be pretty lacking at times but the active community more than makes up for it.
Yahoo UI library is a Swiss army kind of a library in that it provides a complete set of features and widgets letting you build the application you want to build. It is built by the developers at Yahoo itself.
In YUI, the core library contains all the essential elements including DOM traversal and CSS manipulation while the utilities and widgets are optional and are available separately.
Dojo is yet another JS toolkit which provides everything that you'd expect from a modern JS library including a selector engine, AJAX integration and so on.
It also provides a set of rich interface elements and a number of advanced features like persistent connections and offline storage. Dojo has very thorough documentation and a thriving community.
CSS frameworks, when properly used, let you cut down on development time by cutting down on oft repeated declarations and styling.
CSS frameworks can be a pretty polarizing topic among the development community but you owe it to yourself to give it a try.
The 960 grid system intends to ease your workflow without complicating things. There are 12 and 16 columns versions for added choices.
It provides a CSS generator to further cut down on your development time. It also has pre made templates for use in popular software including Photoshop, Fireworks, Illustrator and Expression Design.
YAML, Yet Another Multi column Layout, is a CSS framework which lets you create robust column based and/or grid based layout based on web standards.
It also has a nifty tool for creating YAML CSS code. The documentation is pretty thorough and the community, helpful.
Blueprint is a CSS framework which intends to reduce the time you spending mulling over grids and padding. It makes use of a solid grid, support for typography and print support.
It features wiki based documentation and bug tracking. It boasts an active community where you can post your queries.
Yet another Yahoo products on the list. YUI Grids offers support for multiple widths, fluid layouts, flexible element placement and more.
As with the YUI JS library, each part of this is thoroughly documented with plenty of examples, sample code and screen casts
Elastic is a very simple framework with support for fixed, liquid and elastic layouts.
Elastic has a growing community and pretty decent documentation.
JS Animation Frameworks
Recently, specialized JS animation libraries have been popping up with the sole purpose of providing easier way to animate user interfaces. Let's a look at the most popular ones.
Scripty 2 and script.aculo.us
Scripty and script.aculo.us are based on Prototype and provide a way to seamlessly animate content as well as provide a number of user interface elements to use in our applications.
fx is a standalone JS library which focuses exclusively on animation. As such it lets you animate each and every CSS property along a set time line.
It has decent documentation and is extremely small at less than 4 kb.
gx is a cross browser framework which again focuses exclusively on animation. It has a number of extremely impressive features including easing, delayed animation and predefined animation rules.
Since it is relatively new, the documentation is a little lacking and the community is hard to find. But it is extremely impressive and definitely warrants a try.
Processing.js is built on the canvas element and written by John Resig. It lets you draw elements and then manipulate them on the canvas element.
Since it is a port of Processing for the JS language, it shares most of its advantages including robust support animation capability and shape support.
jsAnim is yet another animation library which lets you create very impressive animations. The example on the front page itself is a wonderful example of what can be done with it.
It weights in at a hefty 25 kilobytes compared to 3.7 for fx but packs a lot of features. The documentation is pretty straight forward and should give you a good idea of the basics.
Raphael is a tiny library which lets you work with vector elements on your web page. It uses SVG or VML as needed to generate its graphics.
It's extremely robust and produces extremely impressive results. A look through the demo pages gives you an idea of what it is capable of.
The documentation is pretty thorough and the discussion group is pretty active too.
And we are done! We looked at all the choices you have when you need to choose a web development framework. We looked at all types of frameworks right from humongous server side frameworks to nimble JS animation frameworks. Hopefully, this has been useful to you and you found it interesting.
Questions? Nice things to say? Criticisms? Hit the comments section and leave me a comment. Happy coding!
- Follow us on Twitter, or subscribe to the Nettuts+ RSS Feed for the best web development tutorials on the web. Ready
Ready to take your skills to the next level, and start profiting from your scripts and components? Check out our sister marketplace, CodeCanyon.