Loading...
Loading...
JavaScript everywhere. Run your code on servers, build tools, and command-line apps.
Module 12 · Path to Frameworks
Frameworks like React and Next.js build on JavaScript fundamentals. Node.js runs JavaScript on servers, npm manages packages, and build tools prepare code for production. This module bridges vanilla JS to the modern ecosystem.
Learn Introduction to Node.js in JavaScript — covering What Is Node, Running Code, Modules, File System with interactive visual examples and step-by-step explanations.
Vanilla JavaScript teaches you how the language works. Frameworks like React teach you how teams ship user interfaces at scale. This module bridges the gap — showing how the fundamentals you have learned map directly to React components, Node.js servers, and npm workflows.
You do not need to pick a framework on day one, but understanding how JavaScript powers React, Next.js, and Node.js makes every future tutorial easier to follow.
Understanding introduction to node.js is essential for every JavaScript developer. It shows up in frontend UI code, backend APIs, and framework internals — and getting it wrong leads to bugs that are hard to trace. This chapter builds intuition with visuals so the behavior sticks.
A JavaScript runtime built on Chrome's V8 engine — but without a browser.
// Browser JS vs Node.js: // // Browser: Node.js: // ✓ DOM, window, document ✗ No DOM, no window // ✓ fetch, localStorage ✓ File system, networking // ✓ User interaction ✓ Server-side processing // ✗ No file system access ✓ Full OS access // // Same language, different environment. // What Node.js gives you: // - Run JS files directly: node app.js // - Access file system (read/write files) // - Create HTTP servers // - Build CLI tools // - Access databases // - Use OS-level APIs (processes, networking) // Install: https://nodejs.org (LTS version) // Verify: // $ node --version → v22.x.x // $ npm --version → 10.x.x // Node.js is NOT a framework — it's a runtime. // Express, Fastify, Hono = frameworks that run ON Node.js.
Execute JavaScript files from the terminal.
// Create a file: hello.js console.log("Hello from Node.js!"); console.log("Process ID:", process.pid); console.log("Node version:", process.version); console.log("Current directory:", process.cwd()); // Run it: // $ node hello.js // Hello from Node.js! // Process ID: 12345 // Node version: v22.5.0 // Current directory: /Users/you/projects // REPL (interactive mode): // $ node // > 2 + 2 // 4 // > "hello".toUpperCase() // 'HELLO' // > .exit // Command-line arguments: // greet.js: const name = process.argv[2] || "World"; console.log("Hello, " + name + "!"); // $ node greet.js Alice // Hello, Alice! // Environment variables: const port = process.env.PORT || 3000; const env = process.env.NODE_ENV || "development"; console.log("Running on port " + port + " in " + env); // Exit codes: // process.exit(0) — success // process.exit(1) — error
Organize code into reusable files with import/export.
// ES Modules (modern — recommended): // Add "type": "module" to package.json // math.js: export function add(a, b) { return a + b; } export function multiply(a, b) { return a * b; } export const PI = 3.14159; // app.js: import { add, multiply, PI } from "./math.js"; console.log(add(2, 3)); // 5 console.log(multiply(4, 5)); // 20 // Default export: // logger.js: export default function log(msg) { console.log("[" + new Date().toISOString() + "] " + msg); } // app.js: import log from "./logger.js"; log("Server started");
ES Modules use import/export syntax. Same as browser modules but running on the server.
Read, write, and manipulate files and directories.
import fs from "node:fs/promises"; import path from "node:path"; // Read a file: const content = await fs.readFile("data.txt", "utf-8"); console.log(content); // Write a file: await fs.writeFile("output.txt", "Hello, file system!"); // Append to file: await fs.appendFile("log.txt", "New entry\n"); // Check if file exists: try { await fs.access("config.json"); console.log("File exists"); } catch { console.log("File not found"); } // Read JSON: const raw = await fs.readFile("package.json", "utf-8"); const pkg = JSON.parse(raw); console.log(pkg.name, pkg.version); // List directory: const files = await fs.readdir("./src"); console.log(files); // ["app.js", "utils.js", ...] // Create directory: await fs.mkdir("./output", { recursive: true }); // Path utilities: const fullPath = path.join(__dirname, "data", "file.txt"); const ext = path.extname("photo.jpg"); // ".jpg" const base = path.basename("/a/b/c.txt"); // "c.txt" const dir = path.dirname("/a/b/c.txt"); // "/a/b" // Delete file: await fs.unlink("temp.txt"); // Copy file: await fs.copyFile("source.txt", "backup.txt");
Create a web server in 10 lines of code.
import { createServer } from "node:http"; const server = createServer((req, res) => { // req = incoming request info // res = response we send back if (req.url === "/" && req.method === "GET") { res.writeHead(200, { "Content-Type": "text/html" }); res.end("<h1>Hello World</h1>"); } else if (req.url === "/api/users" && req.method === "GET") { const users = [{ id: 1, name: "Alice" }, { id: 2, name: "Bob" }]; res.writeHead(200, { "Content-Type": "application/json" }); res.end(JSON.stringify(users)); } else { res.writeHead(404, { "Content-Type": "text/plain" }); res.end("Not Found"); } }); server.listen(3000, () => { console.log("Server running at http://localhost:3000"); }); // Test it: // $ node server.js // Open browser → http://localhost:3000 // Or: curl http://localhost:3000/api/users // This is the foundation — frameworks like Express // add routing, middleware, and convenience methods // on top of this same http module.
Common questions about introduction to node.js.