Node.js vs Express.js: Why Frameworks Exist in the First Place

If you’re learning JavaScript to become a backend or full-stack developer, you’ll hear about Node.js and Express.js very quickly. A question that often comes to a beginner's mind is:
“If Node.js already lets me build servers, why do we even need Express.js?”
Let’s clear this up with simple explanations and a concrete example.
What is Node.js?
Node.js is a runtime environment that lets you run JavaScript outside the browser.
With Node.js, you can:
Build web servers
Work with files
Talk to databases
Write command-line tools
But Node.js is low-level. It gives you raw power but expects you to handle the details. Think of Node.js as the engine of a car: powerful, but not much fun to drive on its own.
What is Express.js?
Express.js is a web framework built on top of Node.js.
It takes care of repetitive tasks like:
Routing (what happens when a user hits
/home
or/login
)Parsing request bodies (like form data or JSON)
Handling errors
Setting headers and status codes
Middleware (authentication, logging, security, etc.)
Express.js is the dashboard and controls built around the Node.js engine.
Example: A Simple Login API
Imagine you want to create a login route where users send their username and password.
with Node.js (without Express.js):
const http = require('http');
const server = http.createServer((req, res) => {
if (req.url === '/login' && req.method === 'POST') {
let body = '';
req.on('data', chunk => {
body += chunk.toString();
});
req.on('end', () => {
const data = JSON.parse(body);
const { username, password } = data;
if (username === 'admin' && password === '1234') {
res.writeHead(200, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'Login successful' }));
} else {
res.writeHead(401, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'Invalid credentials' }));
}
});
} else {
res.writeHead(404, { 'Content-Type': 'application/json' });
res.end(JSON.stringify({ message: 'Not Found' }));
}
});
server.listen(3000, () => console.log('Server running at http://localhost:3000'));
It Works fine, but notice how much manual work you did:
Collecting request data in chunks
Parsing JSON yourself
Writing response headers each time
Handling routing with
if
conditions
For one route, it’s okay. For ten routes? For fifty? It becomes painful.
With Express.js - Framework:
const express = require('express');
const app = express();
app.use(express.json()); // Middleware to parse JSON automatically
app.post('/login', (req, res) => {
const { username, password } = req.body;
if (username === 'admin' && password === '1234') {
res.json({ message: 'Login successful' });
} else {
res.status(401).json({ message: 'Invalid credentials' });
}
});
app.listen(3000, () => console.log('Server running at http://localhost:3000'));
With Express:
Request body is already parsed (
req.body
)No need for manual headers (
res.json()
handles it)Cleaner routing (
app.post
('/login', ...)
)Middleware support (easily add authentication, logging, etc.)
Same functionality → 1/3rd the code, much easier to read.
Why Frameworks Exist
Frameworks like Express.js exist because they:
Save Time → Provide pre-built solutions for common problems.
Bring Consistency → Every Express project looks similar, so teams can collaborate easily.
Speed Up Development → Build real apps in hours, not weeks.
Add Security → Protect against common web vulnerabilities.
Enable Scalability → Middleware, plugins, and conventions make large apps maintainable.
Framework = best practices + useful tools + structure in one package.
Takeaway for Aspiring Developers
Node.js = Engine → Runs JavaScript on servers.
Express.js = Toolkit → Makes building web apps and APIs practical.
Frameworks exist so you can focus on solving real problems, not writing repetitive boilerplate.
As a beginner, experiment with raw Node.js first to understand the fundamentals, but for real-world projects, Express.js is a must-have.
That’s why every serious developer learns Frameworks —it’s the difference between wiring everything by hand and building apps that actually scale.
Subscribe to my newsletter
Read articles from Chandra Prakash Tekwani directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by