Express.js là một framework nhẹ và linh hoạt cho Node.js, cung cấp một bộ tính năng mạnh mẽ để phát triển các ứng dụng web và di động. Nó giúp đơn giản hóa quy trình phát triển bằng cách cung cấp các công cụ và phương pháp để xử lý các yêu cầu HTTP, định tuyến và quản lý middleware. Express.js được thiết kế để dễ sử dụng và mở rộng, phù hợp cho cả những dự án nhỏ lẫn những ứng dụng web lớn và phức tạp.
Cài đặt và Cấu hình cơ bản
Cài đặt Node.js và npm
Trước khi bắt đầu với Express.js, bạn cần cài đặt Node.js và npm (Node Package Manager). Bạn có thể tải xuống và cài đặt Node.js từ trang web chính thức nodejs.org. Sau khi cài đặt, bạn có thể kiểm tra phiên bản Node.js và npm bằng cách chạy các lệnh sau trong terminal:
node -v npm -v
Cài đặt Express.js
Sau khi cài đặt Node.js và npm, bạn có thể cài đặt Express.js bằng lệnh npm sau:
npm install express --save
Lệnh này sẽ thêm Express.js vào dự án của bạn và cập nhật tệp package.json
để quản lý các phụ thuộc.
Tạo ứng dụng Express.js đầu tiên
Bây giờ, hãy tạo một tệp mới tên là app.js
và bắt đầu với ứng dụng Express.js cơ bản:
const express = require('express'); const app = express(); const port = 3000; app.get('/', (req, res) => { res.send('Hello World!'); }); app.listen(port, () => { console.log(`Example app listening at http://localhost:${port}`); });
Chạy ứng dụng bằng lệnh:
node app.js
Truy cập vào http://localhost:3000/
và bạn sẽ thấy thông báo “Hello World!”.
Cấu trúc Thư mục và Tập tin trong Express.js
Cấu trúc thư mục cơ bản
Cấu trúc thư mục tiêu chuẩn trong ứng dụng Express.js bao gồm các thư mục như routes
, views
, public
, và models
. Đây là một ví dụ về cấu trúc thư mục:
myapp/ ├── app.js ├── package.json ├── routes/ │ └── index.js ├── views/ │ └── index.ejs ├── public/ │ ├── stylesheets/ │ └── images/ └── models/
Tập tin chính của ứng dụng
Tệp app.js
hoặc server.js
thường là tệp chính của ứng dụng, nơi bạn khởi tạo ứng dụng Express, định nghĩa các middleware và thiết lập kết nối cơ sở dữ liệu.
Xử lý Routing trong Express.js
Định nghĩa Routes
Routes trong Express.js cho phép bạn định nghĩa cách ứng dụng của bạn phản hồi lại các yêu cầu HTTP. Ví dụ về một route đơn giản:
app.get('/about', (req, res) => { res.send('About Page'); });
Sử dụng Middleware
Middleware là các hàm có quyền truy cập vào đối tượng yêu cầu (req), phản hồi (res), và hàm tiếp theo trong vòng đời yêu cầu-đáp ứng. Middleware có thể thực hiện các nhiệm vụ như xử lý yêu cầu, xác thực người dùng, và ghi log. Ví dụ:
app.use((req, res, next) => { console.log('Time:', Date.now()); next(); });
Xử lý yêu cầu và phản hồi
Bạn có thể xử lý các yêu cầu HTTP và gửi phản hồi bằng cách sử dụng các phương thức như app.get()
, app.post()
, app.put()
, và app.delete()
. Ví dụ:
app.post('/submit', (req, res) => { res.send('Form Submitted'); });
Tương tác với Cơ sở dữ liệu
Kết nối với MongoDB
Express.js thường được sử dụng với MongoDB để lưu trữ dữ liệu. Bạn có thể sử dụng Mongoose, một ODM (Object Data Modeling) library cho MongoDB và Node.js. Cài đặt Mongoose bằng lệnh:
npm install mongoose
Kết nối tới MongoDB:
const mongoose = require('mongoose'); mongoose.connect('mongodb://localhost/mydatabase', { useNewUrlParser: true, useUnifiedTopology: true });
Thao tác CRUD với Cơ sở dữ liệu
Với Mongoose, bạn có thể định nghĩa các mô hình và thực hiện các thao tác CRUD (Create, Read, Update, Delete). Ví dụ:
const Schema = mongoose.Schema; const UserSchema = new Schema({ name: String, email: String, password: String }); const User = mongoose.model('User', UserSchema); // Tạo mới const newUser = new User({ name: 'John', email: 'john@example.com', password: '123456' }); newUser.save(); // Đọc User.find({}, (err, users) => { if (err) throw err; console.log(users); }); // Cập nhật User.updateOne({ email: 'john@example.com' }, { name: 'Johnny' }, (err, res) => { if (err) throw err; console.log(res); }); // Xóa User.deleteOne({ email: 'john@example.com' }, (err) => { if (err) throw err; console.log('User deleted'); });
Quản lý lỗi và Bảo mật
Xử lý lỗi trong Express.js
Xử lý lỗi là một phần quan trọng trong việc phát triển ứng dụng. Bạn có thể sử dụng middleware để xử lý lỗi:
app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Something broke!'); });
Các biện pháp bảo mật
Bảo mật ứng dụng của bạn bằng cách sử dụng các biện pháp như mã hóa mật khẩu, bảo vệ chống lại các cuộc tấn công XSS, CSRF, và sử dụng các thư viện bảo mật như helmet
:
npm install helmet
const helmet = require('helmet'); app.use(helmet());
Kết luận
Express.js là một công cụ mạnh mẽ và dễ sử dụng cho việc phát triển ứng dụng web với Node.js. Với khả năng mở rộng và linh hoạt, nó cho phép bạn xây dựng các ứng dụng từ cơ bản đến phức tạp một cách hiệu quả. Việc nắm vững các khái niệm và kỹ thuật cơ bản của Express.js sẽ giúp bạn tự tin hơn trong việc phát triển và triển khai các ứng dụng web hiện đại.