Web app frameworks and content management systems (CMSs) are surrounded by confused questions from aspiring web developers. Do they differ? How do they differ? Which of the two is better? Written guides that start out with explaining the working principles of a web development framework and eventually give a list full of CMSs as examples just let the confusion linger.
In actuality, both frameworks and CMSs lay out a foundation for a future web app and refer to the same technologies; for instance, both Symfony (a web application framework) and Joomla (a CMS) are powered by PHP. Their possibilities are very similar, and you can create equally powerful web apps with either of the two.
The main difference is in the approach. Imagine navigating your computer via a command line and an explorer. The former is closer to creating a web app with a web application framework, the latter – with a CMS.
Since a framework is usually a set of libraries and tools that help to build a web app, it requires higher programming skills. Offering more freedom for implementation from scratch, a web application framework is a perfect fit for experienced developers.
Yet by no means should you belittle a developer who prefers creating web apps in a CMS. One can argue that with a CMS, a person doesn’t need programming language at all, but this is true only if we’re talking about managing an already existing website. To set up a web app via a CMS, a person should know how to work with a server and be able to read/edit various chunks of code at least.
Model View Controller architecture
More than 80% of all web app frameworks rely on the Model View Controller architecture. The secret of this pattern’s popularity is in how rationally it separates the app logic from the interface forming the 3 components reflected in the architecture’s name.
The Model knows all about the content and the structure of an app. Upon receiving user input data from the Controller, it communicates the way an updated interface should look directly to the View.
This is the app’s frontend. It knows the layout and the way a user can interact with any of its parts. The View receives user input, communicates it to the Controller for analysis and updates or reassembles itself according to the Model’s instructions (or the Controller’s, if a change is minor).
The Controller is an intermediary between the Model and the View. It receives user input from the View, processes it and informs the Model (or the View) what changes should be made.
Some people advocate that the Controller isn’t always necessary and what matters most is to separate the logic from the interface, which is the Model and the View. Yet, assigning input processing to either Model or View disrupts the pattern’s initial ideology of Separated Presentation, where tasks are distributed based on their type.
When each component in an architecture is responsible for a single line of tasks, the project is transparent, flexible and easy to maintain. Besides, the MVC architecture allows:
- Parallel development (less time to deliver)
- Code reuse
- Fixing or modifying one of the components without having to update the others
- Setting SEO-friendly URLs.
Many web frameworks have incorporated the MVC pattern, so if you’re interested in it, make sure the framework of your choice relies on this architecture.
Types of web application frameworks
In the Web 1.0 era, all web apps were mainly built around servers. Such apps still exist and are highly secure, since their entire app logic is stored on the backend.
As web standards began to change, app logic started to shift toward the client, which helped to ensure a smarter interaction between a user and a web app. With the logic on its side, a client can instantly react to user input. What’s more, client-side logic makes apps responsive, so they are easy to navigate on any device.
This way, we now have two groups of web application frameworks: one helps to set up app logic on the server, the other – on the client. To create a powerful web app, you can use both of them simultaneously.
Server-side web application framework
Although frontend has evolved, it’s first and foremost job is to display an interface, and without app logic any UI/UX is irrelevant. That’s why server-side frameworks are important.
Among the most popular MVC-based server-side web frameworks are:
- Symfony (PHP)
- Django (Python)
- Ruby on Rails (Ruby)
- ASP.NET (C#)
By using either of these server-side web application frameworks, you let it handle HTTP requests, database control and management, as well as URL mapping. You can also render view data with a server, like in the Web 1.0 era, but consider using client-side frameworks instead to introduce more user-engaging features and responsiveness.
Client-side web application framework
While with server-side frameworks your choice mainly depends on the language you feel comfortable to develop in, here you should mind specific capabilities of different client-side frameworks. Since they vary in the scope of functionality supported, look for the one that fits the needs of your future web app.