Evolution of Frontend Development and Differences Between React, Vue, and Angular
This article traces the evolution of frontend development from server‑side rendering with PHP/JSP through AJAX and jQuery to modern MVVM frameworks, comparing React, Vue, and Angular in terms of syntax, data‑update mechanisms, performance optimizations, and code‑reuse strategies.
Evolution of Frontend Development
Frontend development has continuously improved over the years, moving from simple static pages to complex single‑page applications. Today three major frameworks dominate the landscape, and this article explores why they coexist and how they differ.
PHP && JSP
In the early days, dynamic content was rendered on the server using technologies such as PHP and JSP. The server filled templates with data, generated HTML, and sent it to the browser.
<!DOCTYPE html>
<html>
<body><h1>My first PHP page</h1><?php
echo "Hello World!";
?></body>
</html>AJAX
AJAX allowed JavaScript to send asynchronous HTTP requests directly from the browser, fetching data without embedding everything in the HTML. Initially based on XML, JSON soon became the preferred format due to its lower overhead.
<body>
<h2>Hello world</h2>
<div id="demo"></div>
<script>
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function () {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", "/api/data", true);
xhttp.send();
</script>
</body>DOM API && jQuery
Developers originally manipulated the DOM directly via the browser’s DOM API, which was cumbersome and suffered from cross‑browser inconsistencies. jQuery emerged to simplify DOM operations and provide a unified API.
$( "button.continue" ).html( "Next Step..." )Frontend Frameworks
As applications grew, developers needed a systematic way to map data changes to DOM updates. MVVM frameworks—Angular, React, and Vue—automate this process, allowing developers to focus on state rather than manual DOM manipulation.
import { useState } from 'react'
function Counter() {
const [count, setCount] = useState(0)
return (
<div>
<p>you clicked {count} times</p>
<button onClick={() => setCount(count + 1)}>increase</button>
<button onClick={() => setCount(count - 1)}>decrease</button>
</div>
)
}
export default CounterDifferences Between React, Vue, and Angular
All three frameworks share the core idea that UI is a function of state (UI = f(state)). However, their implementations differ.
React JSX vs. Vue Templates
React extends JavaScript with JSX, while Vue uses a dedicated template syntax.
React JSX
export default function TodoList() {
let list = ['JavaScript', 'React', 'Vue']
return <div>
{list.map(item => <li>{ item }</li>)}
</div>
}Vue Template
<ul id="array-rendering">
<li v-for="item in items">{{ item.message }}</li>
</ul>JSX’s advantages include leveraging existing JavaScript knowledge, full access to JavaScript features, and seamless integration with TypeScript. Vue templates, being more limited, enable easier static analysis and performance optimizations.
Data‑Update Detection Methods
Angular uses dirty checking after each potentially mutating statement. Vue relies on native JavaScript features: Vue 2 uses Object.defineProperty , Vue 3 uses Proxy . React employs a virtual DOM diffing algorithm, generating a new virtual tree on each render and comparing it to the previous one.
Performance Optimizations
Vue monitors data at the component level; large components can cause many watchers, so splitting into smaller components mitigates frame drops. React skips rendering of unchanged components via shouldComponentUpdate , but for very large trees this can still be costly.
React introduced Fiber, converting the recursive tree traversal into a linked‑list iteration that can be sliced into time‑sliced chunks, similar to OS process scheduling, improving rendering responsiveness.
Code Reuse Strategies
Vue historically used mixins, which can become tangled and hard to maintain. React initially supported mixins but later deprecated them. React now favors Higher‑Order Components (HOC) and render props for logic reuse, while functional components with Hooks (e.g., useState ) provide a clean way to add stateful behavior.
Conclusion
Each of the three major frontend frameworks has its own strengths and trade‑offs. Selecting the right one depends on the specific application scenario, with the ultimate goal of improving productivity, reducing development cost, and ensuring quality.
Architects Research Society
A daily treasure trove for architects, expanding your view and depth. We share enterprise, business, application, data, technology, and security architecture, discuss frameworks, planning, governance, standards, and implementation, and explore emerging styles such as microservices, event‑driven, micro‑frontend, big data, data warehousing, IoT, and AI architecture.
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.