Node.js Tutorial
Node.js is an open-source, cross-platform runtime environment that allows you to run JavaScript code on the server-side. It is built on Chrome's V8 JavaScript engine and is widely used for building scalable network applications.
1. Getting Started
Installation
- Download and install Node.js from nodejs.org.
- Verify installation:
node -v # Check Node.js version
npm -v # Check npm version
Running Your First Script
Create a file named app.js:
console.log("Hello, Node.js!");
Run the file using:
node app.js
2. Core Concepts
Global Objects
Node.js provides several global objects like __dirname, __filename, and process.
console.log(__dirname); // Directory of the current module
console.log(__filename); // Filename of the current module
REPL (Read-Eval-Print Loop)
Start the Node.js REPL by typing node in the terminal.
node
You can run JavaScript expressions directly:
> 2 + 3
5
3. Modules
Built-in Modules
Node.js comes with built-in modules like fs, http, path, and more.
Example: Using the os module
const os = require("os");
console.log(os.platform());
console.log(os.freemem());
Custom Modules
Create a module:
// math.js
exports.add = (a, b) => a + b;
exports.subtract = (a, b) => a - b;
Use the module in another file:
const math = require("./math");
console.log(math.add(5, 3));
4. File System Operations
Reading and Writing Files
Use the fs module for file operations.
Reading a File
const fs = require("fs");
fs.readFile("example.txt", "utf8", (err, data) => {
if (err) throw err;
console.log(data);
});
Writing to a File
fs.writeFile("example.txt", "Hello, Node.js!", (err) => {
if (err) throw err;
console.log("File written successfully!");
});
5. HTTP Server
Creating a Simple Server
const http = require("http");
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader("Content-Type", "text/plain");
res.end("Hello, World!\n");
});
server.listen(3000, () => {
console.log("Server running at http://localhost:3000/");
});
6. Event Loop and Events
Using Event Emitters
const EventEmitter = require("events");
const emitter = new EventEmitter();
emitter.on("greet", () => {
console.log("Hello, Event!");
});
emitter.emit("greet");
7. npm and Package Management
Installing Packages
Search for a package on npmjs.com.
Install a package:
npm install lodash
Use it in your project:
const _ = require("lodash");
console.log(_.capitalize("hello world"));
Managing Dependencies
- Install all dependencies from
package.json:npm install - Uninstall a package:
npm uninstall lodash
8. Express Framework
Setting Up Express
Install Express:
npm install express
Create a simple Express server:
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Hello, Express!");
});
app.listen(3000, () => {
console.log("Server running at http://localhost:3000/");
});
9. Asynchronous Programming
Callbacks
fs.readFile("example.txt", (err, data) => {
if (err) throw err;
console.log(data.toString());
});
Promises
const readFile = require("fs").promises.readFile;
readFile("example.txt", "utf8")
.then(data => console.log(data))
.catch(err => console.error(err));
Async/Await
async function readFileAsync() {
try {
const data = await fs.promises.readFile("example.txt", "utf8");
console.log(data);
} catch (err) {
console.error(err);
}
}
readFileAsync();
10. Connecting to Databases
Using MongoDB with Mongoose
Install Mongoose:
npm install mongoose
Connect to MongoDB:
const mongoose = require("mongoose");
mongoose.connect("mongodb://localhost:27017/test", {
useNewUrlParser: true,
useUnifiedTopology: true
});
const db = mongoose.connection;
db.on("error", console.error.bind(console, "connection error:"));
db.once("open", () => {
console.log("Connected to MongoDB");
});
Define a Schema and Model:
const schema = new mongoose.Schema({ name: String });
const Model = mongoose.model("Model", schema);
const doc = new Model({ name: "Node.js" });
doc.save().then(() => console.log("Document saved"));
Conclusion
This tutorial covers the basics and core features of Node.js. Explore further by building projects and learning advanced topics like streams, clustering, and WebSockets.
Content Review
The content in this repository has been reviewed by chevp. Chevp is dedicated to ensuring that the information provided is accurate, relevant, and up-to-date, helping users to learn and implement programming skills effectively.
About the Reviewer
For more insights and contributions, visit chevp's GitHub profile: chevp's GitHub Profile.