Executing JavaScript Post UI Component Rendering

Avatar

By squashlabs, Last Updated: April 14, 2024

Executing JavaScript Post UI Component Rendering

Table of Contents

Overview of UI Components

UI components, also known as user interface components, are the building blocks of a user interface. They are responsible for rendering and displaying the visual elements of a web page or application. UI components can include buttons, forms, input fields, dropdown menus, and more. These components can be created using various technologies such as HTML, CSS, and JavaScript.

Related Article: How to Compare Arrays in Javascript

Example 1: Creating a Button Component in HTML

<button id="myButton">Click Me</button>

In this example, we create a simple button component using HTML. The button has an id attribute of “myButton” which can be used to reference the button in JavaScript.

Example 2: Styling a Button Component with CSS


  .myButton {
    background-color: blue;
    color: white;
    padding: 10px 20px;
    border: none;
    cursor: pointer;
  }


<button class="myButton">Click Me</button>

In this example, we add CSS styles to our button component to give it a blue background color, white text color, and some padding. The button now has a class attribute of “myButton” which can be used to apply the CSS styles.

Event Listeners and UI Component Rendering

Event listeners are a fundamental part of JavaScript programming. They allow us to listen for specific events, such as a button click or a form submission, and execute code in response to those events. When it comes to UI component rendering, event listeners play a crucial role in executing JavaScript after the UI components have been rendered.

Related Article: How to Create a Countdown Timer with Javascript

Example 1: Adding an Event Listener to a Button Component

<button id="myButton">Click Me</button>


  const button = document.getElementById("myButton");
  button.addEventListener("click", function() {
    console.log("Button clicked!");
  });

In this example, we add an event listener to the button component using JavaScript. The event listener listens for a “click” event on the button and executes the provided callback function when the event occurs. In this case, the callback function simply logs a message to the console when the button is clicked.

Example 2: Adding Event Listeners to Multiple UI Components

<button id="button1">Button 1</button>
<button id="button2">Button 2</button>


  const button1 = document.getElementById("button1");
  const button2 = document.getElementById("button2");

  button1.addEventListener("click", function() {
    console.log("Button 1 clicked!");
  });

  button2.addEventListener("click", function() {
    console.log("Button 2 clicked!");
  });

In this example, we add event listeners to multiple button components. Each button has its own unique id and event listener. When a button is clicked, the respective callback function is executed and a message is logged to the console.

DOM Manipulation and UI Component Rendering

DOM manipulation refers to the process of modifying the structure, content, or styling of a web page using JavaScript. It is often used in conjunction with UI component rendering to update or modify UI components after they have been rendered.

Related Article: How to Distinguish Between Let and Var in Javascript

Example 1: Modifying the Text of a UI Component

<p id="myParagraph">Hello, World!</p>


  const paragraph = document.getElementById("myParagraph");
  paragraph.textContent = "Goodbye, World!";

In this example, we select the paragraph component using its id and modify its text content using JavaScript. The original text “Hello, World!” is replaced with the new text “Goodbye, World!”.

Example 2: Changing the Style of a UI Component

<p id="myParagraph">Hello, World!</p>


  const paragraph = document.getElementById("myParagraph");
  paragraph.style.color = "red";
  paragraph.style.fontSize = "20px";

In this example, we select the paragraph component and change its style using JavaScript. We set the color of the text to red and the font size to 20 pixels.

Asynchronous Programming and UI Component Rendering

Asynchronous programming is a programming paradigm that allows multiple tasks to be executed concurrently, without blocking the execution of other tasks. When it comes to UI component rendering, asynchronous programming is often used to load data or resources asynchronously and update the UI components once the data or resources are available.

Related Article: How to Get Current Date and Time in Javascript

Example 1: Fetching Data Asynchronously and Rendering UI Components

<div id="myData"></div>


  fetch("https://api.example.com/data")
    .then(response => response.json())
    .then(data => {
      const myDataElement = document.getElementById("myData");
      myDataElement.textContent = data.message;
    })
    .catch(error => {
      console.error("Error:", error);
    });

In this example, we use the fetch API to make an asynchronous request to an API endpoint that returns some data. Once the data is received, we select the UI component with the id “myData” and update its text content with the message from the data.

Example 2: Loading Images Asynchronously and Updating UI Components

<img id="myImage" src="placeholder.jpg">


  const image = document.getElementById("myImage");
  const imageUrl = "https://example.com/image.jpg";

  image.addEventListener("load", function() {
    console.log("Image loaded!");
  });

  image.src = imageUrl;

In this example, we load an image asynchronously by setting its source attribute to the URL of the image. We also add an event listener to the image that listens for the “load” event, which is fired when the image has finished loading. In this case, the callback function simply logs a message to the console when the image is loaded.

Callback Functions and UI Component Rendering

Callback functions are functions that are passed as arguments to other functions and are executed at a later time or in response to a specific event. They are commonly used in JavaScript to handle asynchronous operations and execute code after a particular task has been completed. When it comes to UI component rendering, callback functions can be used to run JavaScript code after the UI components have been rendered.

Related Article: How to Check for String Equality in Javascript

Example 1: Using a Callback Function to Render UI Components

<div id="myContainer"></div>


  function renderUI(callback) {
    const container = document.getElementById("myContainer");
    
    // Simulating an asynchronous operation
    setTimeout(function() {
      container.innerHTML = "<p>UI components rendered!</p>";
      callback();
    }, 2000);
  }

  function afterRenderCallback() {
    console.log("UI components rendered successfully!");
  }

  renderUI(afterRenderCallback);

In this example, we have a renderUI function that takes a callback function as an argument. Inside the renderUI function, we simulate an asynchronous operation using setTimeout. After the UI components have been rendered, we call the callback function. In this case, the callback function simply logs a message to the console.

Example 2: Using a Callback Function to Handle UI Component Interaction

<button id="myButton">Click Me</button>


  function handleClick(callback) {
    const button = document.getElementById("myButton");
    button.addEventListener("click", callback);
  }

  function handleButtonClick() {
    console.log("Button clicked!");
  }

  handleClick(handleButtonClick);

In this example, we have a handleClick function that takes a callback function as an argument. Inside the handleClick function, we add an event listener to the button component. When the button is clicked, the callback function is executed. In this case, the callback function simply logs a message to the console.

jQuery and UI Component Rendering

jQuery is a popular JavaScript library that simplifies HTML document traversal, event handling, animation, and AJAX interactions. It provides a concise and efficient way to interact with UI components and manipulate the DOM. When it comes to UI component rendering, jQuery offers several methods and functions that can be used to execute JavaScript after the UI components are loaded.

Related Article: How to Check If a Value is an Object in JavaScript

Example 1: Using the $(document).ready() Function

<div id="myContainer"></div>



  $(document).ready(function() {
    const container = $("#myContainer");
    container.html("<p>UI components rendered!</p>");
  });

In this example, we use the $(document).ready() function, also known as the DOM-ready event handler, to execute the provided callback function once the DOM is ready. Inside the callback function, we select the container element using its id and update its content with the desired UI components.

Example 2: Using the .load() Method to Load UI Components

<div id="myContainer"></div>



  $("#myContainer").load("ui-components.html");

In this example, we use the .load() method provided by jQuery to load UI components from an external HTML file. We select the container element using its id and call the .load() method with the URL of the HTML file. jQuery will then fetch the HTML file and replace the content of the container element with the loaded UI components.

React and UI Component Rendering

React is a JavaScript library for building user interfaces. It allows developers to create reusable UI components and efficiently update the UI in response to changes in data. React makes use of a virtual DOM (Document Object Model) to efficiently render UI components and update only the necessary parts of the DOM. When it comes to UI component rendering in React, there are several techniques and best practices that can be followed.

Related Article: JavaScript HashMap: A Complete Guide

Example 1: Creating a Functional Component in React

import React from "react";

function MyComponent() {
  return <div>UI component rendered!</div>;
}

export default MyComponent;

In this example, we create a functional component in React called MyComponent. The component returns a JSX element that represents the UI component to be rendered. In this case, the component renders a div element with the text “UI component rendered!”.

Example 2: Using useEffect() Hook to Execute JavaScript After UI Component Rendering

import React, { useEffect } from "react";

function MyComponent() {
  useEffect(() => {
    console.log("Component rendered!");
  }, []);

  return <div>UI component rendered!</div>;
}

export default MyComponent;

In this example, we use the useEffect() hook provided by React to execute the provided callback function after the UI component has been rendered. The useEffect() hook takes two arguments: the callback function to be executed and an array of dependencies. In this case, the array of dependencies is empty, which means the callback function will only be executed once, after the initial rendering of the component. In this case, the callback function simply logs a message to the console.

Vue.js and UI Component Rendering

Vue.js is a progressive JavaScript framework for building user interfaces. It provides an intuitive API for creating UI components and managing their state. Vue.js uses a virtual DOM similar to React to efficiently render UI components and update only the necessary parts of the DOM. When it comes to UI component rendering in Vue.js, there are several techniques and best practices that can be followed.

Related Article: The Most Common JavaScript Errors and How to Fix Them

Example 1: Creating a Vue Component


  <div>
    <p>UI component rendered!</p>
  </div>



export default {
  name: "MyComponent",
};



p {
  color: blue;
}

In this example, we create a Vue component called MyComponent. The component template contains the HTML structure of the UI component to be rendered. In this case, the template includes a div element with a paragraph element inside. The component script exports an object that specifies the name of the component. The component style specifies CSS styles that are scoped to the component, meaning they only apply to the HTML elements within the component.

Example 2: Using the mounted() Hook to Execute JavaScript After UI Component Rendering


  <div>
    <p>UI component rendered!</p>
  </div>



export default {
  name: "MyComponent",
  mounted() {
    console.log("Component rendered!");
  },
};

In this example, we use the mounted() lifecycle hook provided by Vue.js to execute the provided callback function after the UI component has been rendered. The mounted() hook is called after the component has been inserted into the DOM. In this case, the callback function simply logs a message to the console.

Angular and UI Component Rendering

Angular is a TypeScript-based open-source web application framework developed by Google. It allows developers to build dynamic and scalable web applications with a component-based architecture. When it comes to UI component rendering in Angular, there are several techniques and best practices that can be followed.

Related Article: nvm (Node Version Manager): Install Guide & Cheat Sheet

Example 1: Creating an Angular Component

import { Component } from "@angular/core";

@Component({
  selector: "app-my-component",
  template: `
    <div>
      <p>UI component rendered!</p>
    </div>
  `,
  styles: [
    `
      p {
        color: blue;
      }
    `,
  ],
})
export class MyComponent {}

In this example, we create an Angular component called MyComponent. The component selector specifies how the component will be used in the HTML template. The component template contains the HTML structure of the UI component to be rendered. In this case, the template includes a div element with a paragraph element inside. The component styles specify CSS styles that are applied to the HTML elements within the component.

Example 2: Using the ngOnInit() Lifecycle Hook to Execute JavaScript After UI Component Rendering

import { Component, OnInit } from "@angular/core";

@Component({
  selector: "app-my-component",
  template: `
    <div>
      <p>UI component rendered!</p>
    </div>
  `,
})
export class MyComponent implements OnInit {
  ngOnInit() {
    console.log("Component rendered!");
  }
}

In this example, we implement the OnInit interface provided by Angular to use the ngOnInit() lifecycle hook. The ngOnInit() hook is called after the component has been initialized and the input properties have been bound. In this case, the callback function simply logs a message to the console.

Techniques to Ensure JavaScript Executes After UI Components are Loaded

When it comes to executing JavaScript after UI components are loaded, there are several techniques that can be used. These techniques ensure that the JavaScript code is run only after the UI components have been rendered and are ready for interaction.

Related Article: How To Capitalize the First Letter In Javascript

Example 1: Using the window.onload Event


  window.onload = function() {
    // JavaScript code to be executed after UI components are loaded
    console.log("UI components loaded!");
  };

In this example, we use the window.onload event to execute the provided callback function after all the UI components on the page have been loaded. The callback function can contain any JavaScript code that needs to be executed after the UI components are ready.

Example 2: Using the DOMContentLoaded Event


  document.addEventListener("DOMContentLoaded", function() {
    // JavaScript code to be executed after UI components are loaded
    console.log("UI components loaded!");
  });

In this example, we use the DOMContentLoaded event to execute the provided callback function after the DOM has been completely loaded and parsed, without waiting for external resources such as images or stylesheets. The callback function can contain any JavaScript code that needs to be executed after the UI components are ready.

Delaying JavaScript Execution Until UI Components are Ready

When it is necessary to delay the execution of JavaScript until the UI components are ready, there are several techniques that can be used. These techniques ensure that the JavaScript code is run only after the UI components have been rendered and are ready for interaction.

Related Article: How To Remove Duplicates From A Javascript Array

Example 1: Using the setTimeout() Function


  setTimeout(function() {
    // JavaScript code to be executed after a delay
    console.log("UI components ready!");
  }, 2000);

In this example, we use the setTimeout() function to delay the execution of the provided callback function by a specified number of milliseconds. In this case, the callback function will be executed after a delay of 2000 milliseconds (2 seconds). The callback function can contain any JavaScript code that needs to be executed after the UI components are ready.

Example 2: Using the requestAnimationFrame() Function


  requestAnimationFrame(function() {
    // JavaScript code to be executed on the next animation frame
    console.log("UI components ready!");
  });

In this example, we use the requestAnimationFrame() function to schedule the execution of the provided callback function on the next animation frame. This ensures that the JavaScript code is executed at the optimal time for smooth animation and rendering. The callback function can contain any JavaScript code that needs to be executed after the UI components are ready.

Best Practices for Handling JavaScript Execution After UI Components are Rendered

When it comes to handling JavaScript execution after UI components are rendered, there are several best practices that can be followed. These best practices ensure that the JavaScript code is executed at the right time and in a performant manner.

Related Article: How To Get A Timestamp In Javascript

Example 1: Place JavaScript Code at the Bottom of the HTML File




  <title>My Web Page</title>


  <!-- UI components go here -->
  
  


In this example, we place the JavaScript code at the bottom of the HTML file, just before the closing body tag. This ensures that the JavaScript code is loaded and executed after the UI components have been rendered. Placing the JavaScript code at the bottom of the HTML file also allows the UI components to be loaded and rendered first, resulting in a faster initial page load.

Example 2: Use Asynchronous Script Loading




  <title>My Web Page</title>


  <!-- UI components go here -->
  
  


In this example, we use the async attribute when loading the JavaScript file. This tells the browser to load the JavaScript file asynchronously, without blocking the rendering of the UI components. The JavaScript code will be executed as soon as it is loaded, regardless of whether the UI components have finished rendering or not. This can improve the performance of the page by allowing the UI components to render faster.

Specific Methods and Functions to Ensure JavaScript Runs After UI Components

When it comes to ensuring that JavaScript runs after UI components, there are specific methods and functions that can be used. These methods and functions provide control over when and how the JavaScript code is executed.

Related Article: How To Validate An Email Address In Javascript

Example 1: Using the defer Attribute




  <title>My Web Page</title>
  


  <!-- UI components go here -->


In this example, we use the defer attribute when loading the JavaScript file. This tells the browser to defer the execution of the JavaScript code until after the UI components have been rendered. The JavaScript code will be executed in the order they appear in the HTML file, just before the DOMContentLoaded event is fired. This ensures that the JavaScript code is executed after the UI components are ready.

Example 2: Using the async Attribute with DOMContentLoaded




  <title>My Web Page</title>
  
    document.addEventListener("DOMContentLoaded", function() {
      // JavaScript code to be executed after UI components are loaded
      console.log("UI components loaded!");
    });
  


  <!-- UI components go here -->
  


In this example, we use the async attribute when loading the JavaScript file. This tells the browser to load the JavaScript file asynchronously, without blocking the rendering of the UI components. The JavaScript code will be executed as soon as it is loaded, regardless of whether the UI components have finished rendering or not. We also use the DOMContentLoaded event to ensure that the JavaScript code is executed only after the UI components are loaded.

The Role of Event Listeners in Executing JavaScript After UI Components

Event listeners play a crucial role in executing JavaScript after UI components. They allow us to listen for specific events, such as a button click or a form submission, and execute code in response to those events. When it comes to executing JavaScript after UI components are rendered, event listeners can be used to trigger the execution of the JavaScript code at the right time.

Related Article: How To Sum An Array Of Numbers In Javascript

Example 1: Using an Event Listener to Execute JavaScript After Button Click

<button id="myButton">Click Me</button>


  const button = document.getElementById("myButton");
  button.addEventListener("click", function() {
    // JavaScript code to be executed after button click
    console.log("Button clicked!");
  });

In this example, we add an event listener to a button component. The event listener listens for a “click” event on the button and executes the provided callback function when the event occurs. In this case, the callback function contains the JavaScript code that needs to be executed after the button is clicked.

Example 2: Using an Event Listener to Execute JavaScript After Form Submission


  
  <button type="submit">Submit</button>



  const form = document.getElementById("myForm");
  form.addEventListener("submit", function(event) {
    event.preventDefault();
  
    // JavaScript code to be executed after form submission
    console.log("Form submitted!");
  });

In this example, we add an event listener to a form component. The event listener listens for a “submit” event on the form and executes the provided callback function when the event occurs. In this case, the callback function contains the JavaScript code that needs to be executed after the form is submitted. We also use the preventDefault() method to prevent the default form submission behavior and handle the form submission with our JavaScript code.

Manipulating the DOM Using JavaScript After UI Component Rendering

Manipulating the DOM using JavaScript after UI component rendering allows us to update or modify the structure, content, or styling of the UI components dynamically. This can be done using various DOM manipulation methods and functions provided by JavaScript.

Related Article: How To Check If an Array Contains a Value In JavaScript

Example 1: Changing the Text of a UI Component

<p id="myParagraph">Hello, World!</p>


  const paragraph = document.getElementById("myParagraph");
  paragraph.textContent = "Goodbye, World!";

In this example, we select a paragraph component using its id and change its text content using JavaScript. The original text “Hello, World!” is replaced with the new text “Goodbye, World!”.

Example 2: Adding a CSS Class to a UI Component

<p id="myParagraph">Hello, World!</p>


  const paragraph = document.getElementById("myParagraph");
  paragraph.classList.add("highlight");



  .highlight {
    background-color: yellow;
  }

In this example, we select a paragraph component using its id and add a CSS class to it using JavaScript. The CSS class “highlight” is defined in the style section and sets the background color to yellow. When the JavaScript code is executed, the paragraph component will have the “highlight” class applied to it, resulting in a yellow background color.

Handling Asynchronous Programming in JavaScript with UI Components

Asynchronous programming is a programming paradigm that allows multiple tasks to be executed concurrently, without blocking the execution of other tasks. When it comes to UI component rendering, asynchronous programming is often used to load data or resources asynchronously and update the UI components once the data or resources are available.

Related Article: How to Use the JavaScript Filter Array Method

Example 1: Fetching Data Asynchronously and Rendering UI Components

<div id="myData"></div>


  fetch("https://api.example.com/data")
    .then(response => response.json())
    .then(data => {
      const myDataElement = document.getElementById("myData");
      myDataElement.textContent = data.message;
    })
    .catch(error => {
      console.error("Error:", error);
    });

In this example, we use the fetch API to make an asynchronous request to an API endpoint that returns some data. Once the data is received, we select the UI component with the id “myData” and update its text content with the message from the data.

Example 2: Loading Images Asynchronously and Updating UI Components

<img id="myImage" src="placeholder.jpg">


  const image = document.getElementById("myImage");
  const imageUrl = "https://example.com/image.jpg";

  image.addEventListener("load", function() {
    console.log("Image loaded!");
  });

  image.src = imageUrl;

In this example, we load an image asynchronously by setting its source attribute to the URL of the image. We also add an event listener to the image that listens for the “load” event, which is fired when the image has finished loading. In this case, the callback function simply logs a message to the console when the image is loaded.

Using Callback Functions to Execute JavaScript After UI Components

Callback functions are functions that are passed as arguments to other functions and are executed at a later time or in response to a specific event. They are commonly used in JavaScript to handle asynchronous operations and execute code after a particular task has been completed. When it comes to UI component rendering, callback functions can be used to run JavaScript code after the UI components have been rendered.

Related Article: How to Autofill a Textarea Element with VueJS

Example 1: Using a Callback Function to Render UI Components

<div id="myContainer"></div>


  function renderUI(callback) {
    const container = document.getElementById("myContainer");
    
    // Simulating an asynchronous operation
    setTimeout(function() {
      container.innerHTML = "<p>UI components rendered!</p>";
      callback();
    }, 2000);
  }

  function afterRenderCallback() {
    console.log("UI components rendered successfully!");
  }

  renderUI(afterRenderCallback);

In this example, we have a renderUI function that takes a callback function as an argument. Inside the renderUI function, we simulate an asynchronous operation using setTimeout. After the UI components have been rendered, we call the callback function. In this case, the callback function simply logs a message to the console.

Example 2: Using a Callback Function to Handle UI Component Interaction

<button id="myButton">Click Me</button>


  function handleClick(callback) {
    const button = document.getElementById("myButton");
    button.addEventListener("click", callback);
  }

  function handleButtonClick() {
    console.log("Button clicked!");
  }

  handleClick(handleButtonClick);

In this example, we have a handleClick function that takes a callback function as an argument. Inside the handleClick function, we add an event listener to the button component. When the button is clicked, the callback function is executed. In this case, the callback function simply logs a message to the console.

There are several popular libraries and frameworks that provide built-in functionality for running JavaScript after UI components have been rendered. These libraries and frameworks simplify the process of executing JavaScript code in response to UI events or after UI components have been loaded.

Related Article: 25 Handy Javascript Code Snippets for Everyday Use

Example 1: Using Angular’s AfterViewInit Lifecycle Hook

import { Component, AfterViewInit } from "@angular/core";

@Component({
  selector: "app-my-component",
  template: `
    <div>
      <p>UI component rendered!</p>
    </div>
  `,
})
export class MyComponent implements AfterViewInit {
  ngAfterViewInit() {
    console.log("Component rendered!");
  }
}

In this example, we use Angular’s AfterViewInit lifecycle hook to execute the provided callback function after the UI component has been rendered. The ngAfterViewInit() hook is called after the component’s view has been initialized and the UI components have been rendered. In this case, the callback function simply logs a message to the console.

Example 2: Using React’s useEffect Hook

import React, { useEffect } from "react";

function MyComponent() {
  useEffect(() => {
    console.log("Component rendered!");
  }, []);

  return <div>UI component rendered!</div>;
}

In this example, we use React’s useEffect hook to execute the provided callback function after the UI component has been rendered. The useEffect hook is called after the component has been rendered and the UI components are ready. In this case, the callback function simply logs a message to the console. The empty array [] as the second argument ensures that the callback function is only executed once, after the initial rendering of the component.

Example 3: Using Vue.js’s mounted Hook


  <div>
    <p>UI component rendered!</p>
  </div>



export default {
  name: "MyComponent",
  mounted() {
    console.log("Component rendered!");
  },
};

In this example, we use Vue.js’s mounted hook to execute the provided callback function after the UI component has been rendered. The mounted hook is called after the component has been inserted into the DOM and the UI components are ready. In this case, the callback function simply logs a message to the console.

Related Article: How To Loop Through An Array In Javascript

Example 4: Using jQuery’s $(document).ready() Function




  <title>My Web Page</title>


  <!-- UI components go here -->
  
  
  
    $(document).ready(function() {
      console.log("UI components ready!");
    });
  


In this example, we use jQuery’s $(document).ready() function to execute the provided callback function after the UI components have been loaded and are ready. The callback function can contain any JavaScript code that needs to be executed after the UI components are ready. The jQuery library is loaded before the script tag to ensure that the $(document).ready() function is available.

These are just a few examples of the many libraries and frameworks available for running JavaScript after UI components have been rendered. The choice of library or framework depends on the specific requirements of your project and the tools you are comfortable with.

Additional Resources

Ensuring JavaScript code runs after UI components have loaded
Using promises in JavaScript

You May Also Like

Accessing Parent State from Child Components in Next.js

In this article, you will learn how to access parent state from child components in Next.js. Discover the best way to pass data from parent to child components and how... read more

How to Integrate Redux with Next.js

Redux is a popular state management library in JavaScript development, and Next.js is a powerful framework for building server-side rendered React applications. This... read more

Next.js Bundlers Quick Intro

Next.js is a popular framework for building React applications. In the latest version, Next.js 13, developers are curious about whether it uses Webpack as its bundler.... read more

Integrating React Router with Next.js in JavaScript

The article "The article" teaches you how to use React Router with the Next.js framework. It covers topics such as routing in React, server-side rendering, dynamic... read more

How to Create a Navbar in Next.js

Developing a navigation bar in Next.js using JavaScript is made easy with this step-by-step tutorial. Dive into understanding React components and create a basic navbar... read more

Server-side rendering (SSR) Basics in Next.js

Server-side rendering (SSR) is a key feature of Next.js, a JavaScript framework, that allows web applications to load and render content on the server before sending it... read more