Use the built-in express.static middleware and point it at a folder. Express then maps request paths to files in that folder, such as images, CSS and JavaScript.
// Serve files from 'public' directory
app.use(express.static('public'));
// Serve with virtual path prefix
app.use('/static', express.static('public'));
With the first line, public/logo.png is served at /logo.png, because the folder name is not part of the URL. The second line adds a virtual path prefix, so the same file is also at /static/logo.png. The folder path is relative to where you start the node process, so path.join(__dirname, 'public') is safer.
When no file matches, the middleware calls next(), so later routes still run. In Express 5, it ignores dotfiles such as .env by default. For high traffic, put a reverse proxy cache in front of the static files.
This answer doesn't lend itself to a diagram - it reads best . No credits were charged.
Why there's no diagram: “”
The interactive diagram is below the answer - jump to diagram ↓ · Below it, the related concept . Jump to it ↓
The diagram below the answer is the concept . Jump to it ↓