An application framework
An application framework is an integrated platform that makes the process of developing and maintaining applications a lot simpler. Often they support a certain development methodology and provide interfaces and tools to make the development rapid and agile.
An application framework serves the following two primary purposes:
Reusable program components: Any code that has been written once should be available for use within the same application, and in other applications too. This is called reusability. Generally, high reusability is achieved by careful planning and adherence to an objected-oriented paradigm. An application framework reduces the overheads in developing such reusable program components, and handles many of the coding overheads internally.
Abstracting logic from presentation: In a simpler sense, separating logic from presentation means separating any programming code from the formatting of whatever is finally rendered to the end user (presentation). Ultimately, what a browser can render is generated by the presentation layer and is known as the Document Object Model (DOM). The DOM has a structure, presentation, and behavior. Structure is generally defined by HTML, the presentation by CSS, and behavior by using JavaScript. Separation of logic from presentation means keeping everything that belongs to the DOM away from actual code. Application frameworks help in achieving such a separation by providing what is generally known as templating languages. MODx also allows the separation of logic from presentation, but how it helps you to do this is quite different from what is commonly known among developers as templating.