JavaScript: Two Worlds — One Language
\n\nOnce upon a time, JavaScript was just a language for animating banners and validating forms. Today, it is the most versatile tool in a web developer's arsenal. But with its versatility comes the complexity of choice: write server-side logic in Node.js or leave JS for the frontend and use Python or Go for the backend?
\n\nIn this article, we won't beat around the bush. We'll take real-world scenarios, write code, and honestly figure out where JavaScript shines and where it's better to look for alternatives. If you are facing a stack choice or just want to understand what's going on "under the hood" of modern web applications — you've come to the right place.
\n\nJavaScript on the Frontend: King of the Browser
\n\nHow It Works
\nFrontend development with JavaScript involves working with the DOM, events, animations, and browser APIs. Today, this is no longer just "vanilla JS": the ecosystem of React, Vue, Angular, and Svelte has turned interface creation into a true engineering discipline.
\n\nHere is a simple example showing how JS brings a page to life:
\n\n// Fetch data from the server and display it on the page\nasync function loadUsers() {\n try {\n const response = await fetch('https://api.example.com/users');\n const users = await response.json();\n \n const list = document.getElementById('user-list');\n users.forEach(user => {\n const item = document.createElement('li');\n item.textContent = `${user.name} — ${user.email}`;\n list.appendChild(item);\n });\n } catch (error) {\n console.error('Load error:', error);\n }\n}\n\nloadUsers();\n\nEverything runs in the user's browser. You deliver HTML and a script, and the client does the rest. This provides lightning-fast interface responsiveness: tab switching, animations, data loading without page reloads.
\n\nPros of Frontend Development with JavaScript
\n- \n
- Instant feedback — the user sees changes immediately, without waiting for a server response. \n
- Huge community — any problem has already been solved, any library has been written. \n
- Single language — if you know JS, you can write both the client and server (full-stack). \n
- Rich choice of tools — from React for SPAs to Next.js for SSR. \n
Cons of Frontend Development with JavaScript
\n- \n
- Client-side security — any code can be viewed in developer tools. Secrets and keys cannot be stored here. \n
- SEO issues — pure JS rendering is poorly indexed by search engines (solved with SSR). \n
- Performance on weak devices — heavy SPAs can lag on older phones. \n
- Browser dependency — different versions may interpret code differently. \n
JavaScript on the Backend: Node.js and Its Ecosystem
\n\nHow It Works
\nWhen people say "JavaScript on the backend," they mean Node.js — a runtime environment built on the V8 engine. Node.js allows running JS outside the browser: handling HTTP requests, working with databases, the file system, and network sockets.
\n\nHere is a typical server using Express.js:
\n\nconst express = require('express');\nconst app = express();\nconst PORT = 3000;\n\n// Middleware for parsing JSON\napp.use(express.json());\n\n// Route for fetching users\napp.get('/api/users', async (req, res) => {\n try {\n const users = await db.query('SELECT * FROM users');\n res.json(users);\n } catch (error) {\n res.status(500).json({ error: 'Server error' });\n }\n});\n\n// Route for creating a new user\napp.post('/api/users', async (req, res) => {\n const { name, email } = req.body;\n const newUser = await db.query(\n 'INSERT INTO users (name, email) VALUES ($1, $2) RETURNING *',\n [name, email]\n );\n res.statu