I. Giới Thiệu Về MEAN Stack Và Ứng Dụng Trong Thương Mại Điện Tử
MEAN Stack là một công nghệ hiện đại bao gồm bốn thành phần chính: MongoDB, Express.js, AngularJS và Node.js. Đây là một stack công nghệ full-stack JavaScript cho phép lập trình viên xây dựng ứng dụng web toàn diện từ phía máy chủ đến phía khách hàng. Trong bối cảnh thương mại điện tử phát triển mạnh mẽ, website bán đồ cũ đã trở thành một nhu cầu thiết yếu. Công nghệ MEAN Stack cung cấp một nền tảng mạnh mẽ, linh hoạt và hiệu quả để xây dựng các ứng dụng bán hàng trực tuyến. Khóa luận tốt nghiệp này tập trung vào việc phát triển một website thương mại điện tử chuyên biệt cho lĩnh vực bán đồ cũ, kết hợp các tính năng hiện đại như xác thực người dùng, quản lý bài đăng, tìm kiếm nâng cao và quản lý hình ảnh sản phẩm.
1.1. Các Thành Phần Chính Của MEAN Stack
MongoDB là cơ sở dữ liệu NoSQL linh hoạt, lưu trữ dữ liệu dưới dạng JSON-like documents. Express.js là framework web Node.js mạnh mẽ để xây dựng API RESTful. AngularJS là framework JavaScript phía client cho việc xây dựng giao diện người dùng động. Node.js là nền tảng JavaScript phía server giúp xử lý các yêu cầu không đồng bộ một cách hiệu quả. Sự kết hợp hoàn hảo này tạo nên một hệ thống thông tin toàn vẹn cho ứng dụng bán đồ cũ.
1.2. Tầm Quan Trọng Của Công Nghệ Này Trong Phát Triển Web
MEAN Stack cung cấp một môi trường phát triển thống nhất, tăng hiệu suất làm việc của nhóm phát triển. Sử dụng JavaScript trên cả phía server và client giảm bớt độ phức tạp trong việc quản lý ngôn ngữ lập trình. Website bán đồ cũ được xây dựng trên nền tảng này có thể dễ dàng mở rộng, bảo trì và nâng cấp theo nhu cầu kinh doanh.
II. Kiến Trúc Hệ Thống Và Thiết Kế Cơ Sở Dữ Liệu
Kiến trúc hệ thống website bán đồ cũ được chia thành hai phần chính: Back-End và Front-End. Phía Back-End được xây dựng bằng Node.js và Express.js, chịu trách nhiệm xử lý logic nghiệp vụ, quản lý dữ liệu và cung cấp API RESTful. Phía Front-End sử dụng AngularJS để tạo giao diện người dùng tương tác. Cơ sở dữ liệu MongoDB lưu trữ thông tin người dùng, sản phẩm, bình luận và các dữ liệu khác. Mô hình ERD (Entity-Relationship Diagram) được thiết kế chi tiết để đảm bảo tính toàn vẹn dữ liệu. Các collection trong MongoDB bao gồm Users, Products, Comments và Orders, mỗi collection có cấu trúc document rõ ràng để hỗ trợ các chức năng cốt lõi của website thương mại điện tử.
2.1. Cấu Trúc Front End Và Back End
Back-End sử dụng Express.js để tạo các API endpoint xử lý các yêu cầu HTTP. Front-End được xây dựng với Angular CLI, tổ chức theo mô-đun và components. Các folder được cấu trúc rõ ràng: BackEnd chứa server logic, FrontEnd chứa giao diện. Nodemon được cài đặt để tự động reload server khi có thay đổi code, tăng hiệu suất phát triển.
2.2. Thiết Kế Cơ Sở Dữ Liệu MongoDB
MongoDB collections bao gồm: Users (lưu thông tin đăng nhập, profile), Products (chi tiết sản phẩm cũ), Comments (bình luận sản phẩm), Orders (đơn hàng). Mỗi collection sử dụng document schema linh hoạt, cho phép thêm trường mới mà không ảnh hưởng tới dữ liệu hiện có. Indexes được tạo trên các trường thường xuyên tìm kiếm để tối ưu hiệu suất query.
III. Các Tính Năng Chính Và Chức Năng Của Ứng Dụng
Website bán đồ cũ được phát triển với nhiều tính năng quan trọng để đáp ứng nhu cầu người dùng và quản trị viên. Chức năng xác thực sử dụng Passport.js và JWT tokens để đảm bảo bảo mật. Người dùng có thể đăng ký, đăng nhập an toàn và quản lý hồ sơ cá nhân với khả năng chỉnh sửa thông tin. Chức năng đăng bài cho phép người dùng tải lên sản phẩm cũ với hình ảnh, mô tả chi tiết. Tính năng tìm kiếm nâng cao giúp người dùng tìm kiếm sản phẩm theo nhiều tiêu chí. Chức năng bình luận và quản lý bài đăng cho phép người dùng tương tác với sản phẩm. Tính năng gửi email thông báo người dùng về hoạt động quan trọng. Quản lý hình ảnh được tối ưu hóa để tăng tốc độ tải trang.
3.1. Chức Năng Xác Thực Và Quản Lý Người Dùng
Passport.js kết hợp với JWT tokens tạo ra một hệ thống xác thực an toàn. Mỗi yêu cầu được xác minh bằng token lưu trong localStorage. Hồ sơ cá nhân cho phép người dùng cập nhật thông tin, ảnh đại diện và các thông tin liên lạc. Quản lý người dùng phía admin bao gồm xác minh tài khoản, vô hiệu hóa người dùng vi phạm, thống kê hoạt động người dùng.
3.2. Chức Năng Đăng Bài Bình Luận Và Tìm Kiếm
Chức năng đăng bài cho phép người dùng tạo listings sản phẩm cũ với upload hình ảnh tự động lưu vào database. Chức năng bình luận tạo cộng đồng tương tác, với comment children cho những câu trả lời lồng nhau. Tính năng tìm kiếm sử dụng MongoDB text indexes để tìm kiếm nhanh chóng theo tên, danh mục, giá cả, đảm bảo trải nghiệm người dùng tốt nhất.
IV. Quy Trình Phát Triển Và Các Công Nghệ Hỗ Trợ
Quá trình phát triển website bán đồ cũ từ tháng 3 đến tháng 7 năm 2020 được chia thành các giai đoạn rõ ràng. Giai đoạn đầu tiên tập trung vào tìm hiểu lý thuyết MEAN Stack, MongoDB, Express, Node.js và AngularJS. Giai đoạn thứ hai là cài đặt môi trường phát triển, khởi tạo dự án với git version control. Giai đoạn thứ ba thiết kế cơ sở dữ liệu chi tiết với mô hình ERD. Giai đoạn thứ tư xây dựng Back-End APIs sử dụng Express, thiết lập các endpoints RESTful. Giai đoạn cuối xây dựng Front-End interfaces với AngularJS, thiết kế giao diện người dùng thân thiện. Postman được sử dụng để kiểm thử các API endpoints, đảm bảo các yêu cầu HTTP hoạt động chính xác trước khi tích hợp với Front-End.
4.1. Các Công Cụ Phát Triển Và Cấu Hình Môi Trường
MongoDB được cấu hình với đường dẫn database riêng, khởi động bằng lệnh 'mongod –dbpath'. Node.js và npm cài đặt các dependencies cần thiết. Express.js được cấu hình để lắng nghe trên port 3000, MongoDB chạy trên port 27017. AngularJS được khởi tạo bằng Angular CLI. Nodemon tự động reload server khi có thay đổi code, Git quản lý version control toàn bộ project.
4.2. Kiểm Thử Và Triển Khai Ứng Dụng
Postman là công cụ không thể thiếu để kiểm thử các API RESTful một cách chi tiết và toàn diện. Mỗi endpoint được kiểm thử để xác minh request/response đúng định dạng JSON. Unit testing được thực hiện để đảm bảo từng chức năng hoạt động độc lập. Integration testing kiểm tra sự tương tác giữa các components khác nhau của website bán đồ cũ để đảm bảo tính ổn định và hiệu suất.