Tìm hiểu MERN Stack và Xây dựng Website Mạng Xã Hội (Đồ án)

Tìm hiểu cách xây dựng website mạng xã hội hoàn chỉnh bằng MERN Stack. Hướng dẫn chi tiết qua từng bước để tạo một dự án thực tế, đầy đủ chức năng.

Chuyên ngành

Đồ án 2

Người đăng

Ẩn danh

Thể loại

Báo cáo cuối kì

2022

64
2
0

Phí lưu trữ

30 Point

Mục lục chi tiết

NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN

LỜI CẢM ƠN

I. CHƯƠNG I: GIỚI THIỆU CHUNG

I.1. LÝ DO CHỌN ĐỀ TÀI:

I.2. MỤC TIÊU CỦA ĐỀ TÀI:

I.3. PHƯƠNG PHÁP NGHIÊN CỨU:

I.4. Ý NGHĨA VÀ KẾT QUẢ CỦA HƯỚNG ĐỀ TÀI:

I.4.1. Về mặt sản phẩm:

I.4.2. Về mặt tài liệu:

II. CHƯƠNG II: CÔNG NGHỆ LIÊN QUAN

II.1. TÌM HIỂU VỀ MONGODB:

II.1.1. Ưu điểm của MongoDB:

II.1.2. Nhược điểm của MongoDB:

II.2. TÌM HIỂU VỀ EXPRESSJS:

II.2.1. Tại sao nên sử dụng ExpressJS trong lập trình web:

II.2.1.1. Sự phổ biến của Javasript:
II.2.1.2. Hỗ trợ xây dựng website một cách nhanh chóng:
II.2.1.3. ExpressJS hoàn toàn miễn phí:

II.2.2. Những tính năng của ExpressJS là gì?

II.3. TÌM HIỂU VỀ REACTJS:

II.3.1. Các thành phần cơ bản của ReactJS:

II.3.2. Lợi ích khi sử dụng ReactJS:

II.4. TÌM HIỂU VỀ NODEJS:

II.4.1. Một số ứng dụng của NodeJS:

II.4.2. Ưu điểm của NodeJS:

II.4.3. Nhược điểm của NodeJS:

III. CHƯƠNG III: MÔ HÌNH USE CASE

III.1. SƠ ĐỒ USE CASE MỨC TỔNG QUÁT:

III.2. DANH SÁCH CÁC USE CASE:

III.3. ĐẶC TẢ USE CASE:

III.3.1. Use case Đăng ký:

III.3.2. Use case Gửi email xác nhận:

III.3.3. Use case Đăng nhập:

III.3.4. Use case Nhớ mật khẩu:

III.3.5. Use case Quên mật khẩu:

III.3.6. Use case Thay đổi mật khẩu:

III.3.7. Use case Đăng xuất:

III.3.8. Use case Xem thông tin cá nhân:

III.3.9. Use case Thay đổi thông tin cá nhân:

III.3.10. Use case Xem danh sách bài đăng cá nhân:

III.3.11. Use case Chỉnh sửa bài viết đã đăng:

III.3.12. Use case Xóa bài viết:

III.3.13. Use case Đăng bài viết mới:

III.3.14. Use case Tìm kiếm người dùng:

III.3.15. Use case Theo dõi người dùng:

III.3.16. Use case Xem bài viết:

III.3.17. Use case Thích bài viết:

III.3.18. Use case Xem bình luận:

III.3.19. Use case Thêm bình luận:

III.3.20. Use case Sửa bình luận:

III.3.21. Use case Thích bình luận:

III.3.22. Use case Xóa bình luận:

III.3.23. Use case Phản hồi bình luận:

III.3.24. Use case Trò chuyện:

III.3.25. Use case Nhắn tin:

III.3.26. Use case Call:

IV. CHƯƠNG IV: PHÂN TÍCH HỆ THỐNG

IV.1. Sơ đồ lớp mức phân tích:

IV.2. Danh sách các lớp đối tượng:

IV.3. Mô tả từng lớp đối tượng:

IV.3.1. Đăng ký / Gửi email xác nhận / Đăng nhập/ Nhớ mật khẩu/ Quên mật khẩu/ Thay đổi mật khẩu/ Đăng xuất:

IV.3.2. Xem thông tin cá nhân/Thay đổi thông tin cá nhân:

IV.3.3. Xem danh sách bài đăng cá nhân / Chỉnh sửa bài viết đã đăng/ Xóa bài viết/ Đăng bài viết mới:

IV.3.4. Tìm kiếm người dùng – Theo dõi người dùng/Bỏ theo dõi người dùng:

IV.3.5. Xem bài viết – Thích bài viết/Bỏ thích bài viết – Xem bình luận – Sửa bình luận đã viết – Thích bình luận/Bỏ thích bình luận – Xóa bình luận:

IV.3.6. Nhắn tin – Gọi thường/video:

V. CHƯƠNG V: THIẾT KẾ GIAO DIỆN

V.1. MÀN HÌNH GIỚI THIỆU:

V.2. CÁC MÀN HÌNH QUẢN TRỊ TRUY CẬP:

V.2.1. Màn hình Đăng ký

V.2.2. Popup Gửi Email xác thực – Email xác thực

V.2.3. Màn hình Đăng nhập:

V.2.4. Popup Quên mật khẩu – Email Reset Password:

V.2.5. Màn hình Thay đổi mật khẩu:

V.3. CÁC MÀN HÌNH CHỨC NĂNG:

V.3.1. Màn hình Trang chủ:

V.3.2. Màn hình Profile:

V.3.3. Màn hình Thay đổi thông tin cá nhân:

V.3.4. Màn hình Chi tiết bài viết:

V.3.5. Popup Thêm bài viết mới:

V.3.6. Giao diện Tìm kiếm người dùng:

V.3.7. Giao diện Bình luận:

V.3.8. Giao diện thông báo:

V.3.9. Màn hình Tin nhắn:

V.3.10. Màn hình Discover – Khám phá bài viết của người dùng khác:

VI. CHƯƠNG VI: TỔNG KẾT

VI.1. CÔNG NGHỆ SỬ DỤNG:

VI.2. ĐỘ HOÀN THIỆN CHỨC NĂNG:

VI.3. KẾT QUẢ ĐẠT ĐƯỢC VÀ HƯỚNG PHÁT TRIỂN:

VI.3.1. Kết quả đạt được:

VI.3.2. Nhược điểm:

VI.3.3. Hướng phát triển:

VII. CHƯƠNG VII: BẢNG PHÂN CÔNG CÔNG VIỆC

VIII. CHƯƠNG VIII: TÀI LIỆU THAM KHẢO

Tóm tắt

I. MERN Stack Là Gì Tổng Quan Về Phát Triển Web Full Stack

MERN Stack là một bộ công nghệ JavaScript mạnh mẽ, được sử dụng rộng rãi trong phát triển web full-stack. Nó bao gồm bốn công nghệ chính: MongoDB, Express.js, React.js, và Node.js. Mỗi công nghệ này đóng vai trò quan trọng trong việc xây dựng các ứng dụng web hiện đại, từ frontend đến backend và cơ sở dữ liệu. Sự kết hợp của chúng tạo ra một quy trình phát triển liền mạch, hiệu quả và linh hoạt. MERN Stack đặc biệt phù hợp để xây dựng các ứng dụng web phức tạp, đòi hỏi hiệu suất cao và khả năng mở rộng. MongoDB, một cơ sở dữ liệu NoSQL, lưu trữ dữ liệu dưới dạng JSON-like document, giúp việc truy vấn và quản lý dữ liệu trở nên dễ dàng. Express.js, một framework web cho Node.js, cung cấp các công cụ cần thiết để xây dựng RESTful API và xử lý các yêu cầu HTTP. React.js, một thư viện JavaScript để xây dựng giao diện người dùng (UI), cho phép tạo ra các components React có thể tái sử dụng và dễ dàng quản lý trạng thái. Node.js, một môi trường runtime JavaScript xây dựng trên V8 JavaScript engine, cho phép chạy JavaScript trên server-side. Sự đồng nhất về ngôn ngữ (JavaScript) trên cả frontend và backend giúp các nhà phát triển dễ dàng chuyển đổi giữa các vai trò và tăng tốc quá trình phát triển. MERN Stack là lựa chọn lý tưởng cho các dự án xây dựng ứng dụng web đòi hỏi tính linh hoạt, hiệu suất và khả năng mở rộng cao. Ví dụ, việc sử dụng MERN stack cho phép xây dựng website mạng xã hội với khả năng xử lý lượng lớn người dùng và dữ liệu.

1.1. MongoDB Cơ Sở Dữ Liệu NoSQL Ưu Việt Cho MERN Stack

MongoDB là một cơ sở dữ liệu NoSQL hướng tài liệu, lưu trữ dữ liệu dưới dạng các document giống JSON. Điều này mang lại sự linh hoạt cao trong việc quản lý dữ liệu, đặc biệt là trong các ứng dụng web phức tạp. MongoDB không yêu cầu schema cố định, cho phép các nhà phát triển dễ dàng thêm hoặc thay đổi các trường dữ liệu mà không cần phải thực hiện các thay đổi phức tạp trên schema. MongoDB cũng hỗ trợ indexing, replication và sharding, giúp tăng cường hiệu suất và khả năng mở rộng. MongoDB được sử dụng rộng rãi trong MERN stack vì nó tương thích tốt với JavaScript và có thể được truy vấn dễ dàng bằng Node.js. Ví dụ, một website mạng xã hội có thể sử dụng MongoDB để lưu trữ thông tin người dùng, bài viết, bình luận và các dữ liệu khác liên quan đến mạng xã hội.

1.2. Express.js Framework Web Mạnh Mẽ Cho Ứng Dụng Node.js

Express.js là một framework web tối giản và linh hoạt cho Node.js. Nó cung cấp các công cụ cần thiết để xây dựng RESTful API và xử lý các yêu cầu HTTP. Express.js giúp các nhà phát triển dễ dàng định tuyến các yêu cầu đến các handler khác nhau, xử lý dữ liệu và trả về các phản hồi. Express.js cũng hỗ trợ middleware, cho phép thêm các chức năng bổ sung vào pipeline xử lý yêu cầu. Express.js là một phần quan trọng của MERN stack vì nó cung cấp một lớp trừu tượng trên Node.js, giúp việc xây dựng các ứng dụng web trở nên dễ dàng và nhanh chóng. Ví dụ, Express.js có thể được sử dụng để routing Express các yêu cầu đến các controller khác nhau trong một mô hình MVC.

1.3. React.js Thư Viện UI Cho Giao Diện Người Dùng Tương Tác

React.js là một thư viện JavaScript để xây dựng giao diện người dùng (UI) tương tác. React.js sử dụng một kiến trúc dựa trên components React, cho phép các nhà phát triển chia nhỏ UI thành các phần nhỏ hơn, có thể tái sử dụng và dễ dàng quản lý. React.js cũng sử dụng một khái niệm gọi là Virtual DOM, giúp tăng cường hiệu suất bằng cách chỉ cập nhật các phần thay đổi của DOM. React.js là một phần quan trọng của MERN stack vì nó cung cấp một cách hiệu quả để xây dựng các giao diện người dùng phức tạp. Ví dụ, React.js có thể được sử dụng để xây dựng giao diện cho một website mạng xã hội, bao gồm các user profiles, feeds, posts, comments, likes, và sharing.

II. Thách Thức Khi Xây Dựng Website Mạng Xã Hội Với MERN

Việc xây dựng website mạng xã hội với MERN stack không phải là một nhiệm vụ đơn giản. Có nhiều thách thức cần phải vượt qua, từ việc thiết kế kiến trúc hệ thống, quản lý dữ liệu, đảm bảo security, tối ưu hóa performance, đến triển khai và duy trì ứng dụng. Một trong những thách thức lớn nhất là đảm bảo tính security cho ứng dụng. Website mạng xã hội thường chứa thông tin cá nhân nhạy cảm của người dùng, do đó việc bảo vệ dữ liệu này khỏi các cuộc tấn công là vô cùng quan trọng. Cần phải áp dụng các biện pháp bảo mật như authentication, authorization, mã hóa dữ liệu và kiểm tra đầu vào. Một thách thức khác là tối ưu hóa performance optimization của ứng dụng. Website mạng xã hội thường phải xử lý lượng lớn người dùng và dữ liệu, do đó cần phải đảm bảo rằng ứng dụng có thể đáp ứng được các yêu cầu này một cách nhanh chóng và hiệu quả. Cần phải sử dụng các kỹ thuật như caching, load balancing và tối ưu hóa truy vấn cơ sở dữ liệu. Ngoài ra, việc triển khai và duy trì ứng dụng cũng là một thách thức. Cần phải chọn một giải pháp hosting phù hợp và đảm bảo rằng ứng dụng được cập nhật và bảo trì thường xuyên.

2.1. Bảo Mật Security Dữ Liệu Người Dùng Trong MERN Stack

Bảo mật là yếu tố then chốt trong bất kỳ ứng dụng web nào, đặc biệt là website mạng xã hội, nơi thông tin cá nhân của người dùng rất nhạy cảm. Trong MERN stack, việc bảo mật cần được thực hiện ở nhiều lớp, bao gồm authentication, authorization, mã hóa dữ liệu, và kiểm tra đầu vào. Authentication xác định người dùng là ai, trong khi authorization xác định người dùng có quyền truy cập vào tài nguyên nào. Cần phải sử dụng các giao thức authenticationauthorization an toàn, chẳng hạn như JWT (JSON Web Token) và OAuth. Mã hóa dữ liệu, cả khi truyền và khi lưu trữ, cũng là một biện pháp quan trọng để bảo vệ dữ liệu. Kiểm tra đầu vào giúp ngăn chặn các cuộc tấn công SQL injection và cross-site scripting (XSS). Tham khảo các tài liệu về mern security để đảm bảo an toàn cho ứng dụng.

2.2. Tối Ưu Hóa Hiệu Năng Performance Optimization cho MERN

Hiệu năng là một yếu tố quan trọng để đảm bảo trải nghiệm người dùng tốt. Website mạng xã hội thường phải xử lý lượng lớn người dùng và dữ liệu, do đó cần phải tối ưu hóa hiệu năng của ứng dụng. Trong MERN stack, có nhiều kỹ thuật có thể được sử dụng để tối ưu hóa hiệu năng, bao gồm caching, load balancing, và tối ưu hóa truy vấn cơ sở dữ liệu. Caching giúp giảm tải cho server bằng cách lưu trữ các dữ liệu thường xuyên được truy cập trong bộ nhớ cache. Load balancing giúp phân phối tải giữa nhiều server, giúp tăng cường khả năng mở rộng của ứng dụng. Tối ưu hóa truy vấn cơ sở dữ liệu giúp giảm thời gian truy vấn dữ liệu. Tham khảo các mern tutorial về tối ưu hiệu năng để có giải pháp tốt nhất.

2.3. Triển Khai Deployment và Quản Lý Ứng Dụng MERN Lên Môi Trường Production

Triển khai và quản lý ứng dụng MERN stack lên môi trường production là một quá trình phức tạp, đòi hỏi sự chú ý đến nhiều chi tiết. Cần phải chọn một giải pháp hosting phù hợp, cấu hình server, và triển khai ứng dụng. Có nhiều giải pháp hosting khác nhau, từ các dịch vụ đám mây như AWS, Google Cloud, và Azure, đến các dịch vụ VPS và dedicated server. Cần phải chọn một giải pháp phù hợp với nhu cầu và ngân sách của dự án. Sau khi chọn được giải pháp hosting, cần phải cấu hình server và triển khai ứng dụng. Cần phải đảm bảo rằng ứng dụng được cấu hình đúng cách và được bảo trì thường xuyên. Tham khảo mern deploymentmern hosting để biết thêm chi tiết.

III. Cách Xây Dựng Website Mạng Xã Hội Cơ Bản Với MERN Stack

Để xây dựng website mạng xã hội cơ bản với MERN stack, cần thực hiện theo các bước sau: Thiết lập môi trường phát triển: Cài đặt Node.js, MongoDB, và các công cụ cần thiết. Tạo một mern boilerplate hoặc sử dụng một mern template có sẵn để bắt đầu dự án. Thiết kế cơ sở dữ liệu: Xác định các model dữ liệu cần thiết, chẳng hạn như User, Post, Comment, và Conversation. Xây dựng RESTful API: Sử dụng Express.js để xây dựng các API để tạo, đọc, cập nhật và xóa dữ liệu. Xây dựng giao diện người dùng: Sử dụng React.js để xây dựng các components React cho giao diện người dùng. Kết nối frontend và backend: Sử dụng các API đã xây dựng để kết nối frontend và backend. Triển khai ứng dụng: Triển khai ứng dụng lên một server hoặc dịch vụ hosting.

3.1. Thiết Kế Cơ Sở Dữ Liệu MongoDB Cho Mạng Xã Hội

Thiết kế cơ sở dữ liệu là một bước quan trọng trong việc xây dựng website mạng xã hội. Cần phải xác định các model dữ liệu cần thiết và các mối quan hệ giữa chúng. Trong một website mạng xã hội, các model dữ liệu quan trọng bao gồm User, Post, Comment, và Conversation. Model User lưu trữ thông tin người dùng, chẳng hạn như tên, email, mật khẩu, và ảnh đại diện. Model Post lưu trữ thông tin bài viết, chẳng hạn như nội dung, ảnh, và thời gian đăng. Model Comment lưu trữ thông tin bình luận, chẳng hạn như nội dung và thời gian đăng. Model Conversation lưu trữ thông tin cuộc trò chuyện, chẳng hạn như danh sách người tham gia và tin nhắn. Cần phải xác định các mối quan hệ giữa các model này, chẳng hạn như một User có thể có nhiều Post, một Post có thể có nhiều Comment, và một Conversation có thể có nhiều Message. Sử dụng xây dựng website mạng xã hội với mongodb để tham khảo.

3.2. Xây Dựng RESTful API Với Express.js Để Quản Lý Dữ Liệu

Xây dựng RESTful API là một bước quan trọng để kết nối frontend và backend. Express.js cung cấp các công cụ cần thiết để xây dựng các API để tạo, đọc, cập nhật và xóa dữ liệu. Cần phải xác định các endpoint cho các API này và xử lý các yêu cầu HTTP. Ví dụ, có thể xây dựng các API để tạo một User mới, đọc thông tin của một User, cập nhật thông tin của một User, và xóa một User. Cần phải đảm bảo rằng các API này được bảo mật và chỉ có những người dùng được ủy quyền mới có thể truy cập. Tham khảo mern authenticationmern authorization để có giải pháp tốt.

3.3. Phát Triển Giao Diện Người Dùng UI Tương Tác Với React.js

React.js là một thư viện JavaScript mạnh mẽ để xây dựng giao diện người dùng (UI) tương tác. React.js sử dụng một kiến trúc dựa trên components React, cho phép các nhà phát triển chia nhỏ UI thành các phần nhỏ hơn, có thể tái sử dụng và dễ dàng quản lý. Cần phải xây dựng các components React cho giao diện người dùng của website mạng xã hội, chẳng hạn như user profiles, feeds, posts, comments, likes, và sharing. Cần phải đảm bảo rằng giao diện người dùng được thiết kế tốt và dễ sử dụng.

IV. Các Tính Năng Mạng Xã Hội Thiết Yếu Trong MERN Project

Một website mạng xã hội hoàn chỉnh cần có các tính năng sau: Đăng ký và đăng nhập: Cho phép người dùng tạo tài khoản và đăng nhập vào hệ thống. Tạo và quản lý hồ sơ người dùng: Cho phép người dùng cập nhật thông tin cá nhân và ảnh đại diện. Tạo và chia sẻ bài viết: Cho phép người dùng đăng bài viết, ảnh và video lên feeds của họ. Thích và bình luận bài viết: Cho phép người dùng thích và bình luận các bài viết của người khác. Kết nối và theo dõi người dùng: Cho phép người dùng kết nối và theo dõi những người dùng khác. Tìm kiếm người dùng: Cho phép người dùng tìm kiếm những người dùng khác trong hệ thống. Nhận thông báo: Cho phép người dùng nhận thông báo về các hoạt động trên website mạng xã hội, chẳng hạn như có người thích bài viết của họ hoặc có người bình luận bài viết của họ. Trò chuyện và nhắn tin: Cho phép người dùng trò chuyện và nhắn tin với những người dùng khác. Cần phải xây dựng các tính năng này một cách cẩn thận để đảm bảo rằng website mạng xã hội hoạt động tốt và đáp ứng được nhu cầu của người dùng.

4.1. Xây Dựng Chức Năng Đăng Ký Đăng Nhập và Quản Lý Hồ Sơ User Profiles

Chức năng đăng ký và đăng nhập là cần thiết để cho phép người dùng tạo tài khoản và truy cập vào website mạng xã hội. Cần phải xây dựng các form để người dùng nhập thông tin cá nhân và xác thực tài khoản. Chức năng quản lý hồ sơ cho phép người dùng cập nhật thông tin cá nhân, ảnh đại diện và các thông tin khác liên quan đến hồ sơ của họ. Cần phải đảm bảo rằng các thông tin này được bảo mật và chỉ có người dùng mới có thể truy cập.

4.2. Phát Triển Chức Năng Tạo Chia Sẻ Bài Viết Posts và Bình Luận Comments

Chức năng tạo và chia sẻ bài viết là cốt lõi của một website mạng xã hội. Cần phải cho phép người dùng đăng bài viết, ảnh, video và các nội dung khác lên feeds của họ. Chức năng thích và bình luận bài viết cho phép người dùng tương tác với các bài viết của người khác. Cần phải đảm bảo rằng các bài viết và bình luận được hiển thị đúng cách và được bảo mật.

4.3. Xây Dựng Tính Năng Kết Nối Theo Dõi Người Dùng và Nhận Thông Báo

Chức năng kết nối và theo dõi người dùng cho phép người dùng kết nối và theo dõi những người dùng khác. Điều này giúp người dùng dễ dàng tìm thấy và theo dõi những người mà họ quan tâm. Chức năng thông báo cho phép người dùng nhận thông báo về các hoạt động trên website mạng xã hội, chẳng hạn như có người thích bài viết của họ hoặc có người bình luận bài viết của họ. Cần phải đảm bảo rằng các thông báo được gửi đúng cách và được hiển thị rõ ràng.

V. Triển Khai Real Time Updates Với Websockets và Socket

Để cải thiện trải nghiệm người dùng, real-time updates là một tính năng quan trọng. WebsocketsSocket.io là các công nghệ cho phép thiết lập kết nối hai chiều giữa server và client, cho phép server gửi dữ liệu đến client mà không cần client phải gửi yêu cầu. Điều này rất hữu ích cho các tính năng như thông báo, trò chuyện và cập nhật feeds theo thời gian thực. Cần phải sử dụng Websockets hoặc Socket.io để triển khai real-time updates trong website mạng xã hội.

5.1. Websockets Giao Thức Kết Nối Hai Chiều Cho Real Time Applications

Websockets là một giao thức kết nối hai chiều cho phép thiết lập kết nối liên tục giữa server và client. Điều này cho phép server gửi dữ liệu đến client mà không cần client phải gửi yêu cầu. Websockets rất hữu ích cho các ứng dụng thời gian thực, chẳng hạn như trò chuyện, thông báo và cập nhật feeds.

5.2. Socket.io Thư Viện Hỗ Trợ Websockets Cho Node.js

Socket.io là một thư viện JavaScript hỗ trợ Websockets cho Node.js. Socket.io cung cấp một API đơn giản và dễ sử dụng để thiết lập kết nối Websockets và gửi dữ liệu giữa server và client. Socket.io cũng hỗ trợ các tính năng như tự động kết nối lại và fallbacks cho các trình duyệt không hỗ trợ Websockets.

VI. Kết Luận MERN Stack Lựa Chọn Tối Ưu Cho Website Mạng Xã Hội

MERN stack là một lựa chọn tuyệt vời để xây dựng website mạng xã hội. Nó cung cấp một bộ công nghệ mạnh mẽ và linh hoạt, cho phép các nhà phát triển xây dựng các ứng dụng web hiện đại, hiệu quả và có khả năng mở rộng. Tuy nhiên, cần phải lưu ý rằng việc xây dựng website mạng xã hội với MERN stack không phải là một nhiệm vụ đơn giản và đòi hỏi sự chú ý đến nhiều chi tiết. Cần phải thiết kế kiến trúc hệ thống, quản lý dữ liệu, đảm bảo security, tối ưu hóa performance, và triển khai ứng dụng một cách cẩn thận. Nếu bạn sẵn sàng đối mặt với các thách thức này, MERN stack có thể là lựa chọn tối ưu cho dự án của bạn.

6.1. Ưu Điểm Vượt Trội Của MERN Trong Phát Triển Ứng Dụng Web

MERN stack có nhiều ưu điểm vượt trội trong phát triển ứng dụng web, bao gồm: Đồng nhất về ngôn ngữ (JavaScript) trên cả frontend và backend. Hiệu suất cao và khả năng mở rộng tốt. Linh hoạt và dễ sử dụng. Cộng đồng lớn và hỗ trợ tốt. Các công cụ và thư viện phong phú.

6.2. Hướng Phát Triển Tiềm Năng Của MERN Stack Trong Tương Lai

Trong tương lai, MERN stack có tiềm năng phát triển rất lớn. Các công nghệ trong MERN stack liên tục được cải tiến và cập nhật, mang lại nhiều tính năng mới và cải thiện hiệu suất. Cộng đồng MERN ngày càng lớn mạnh, cung cấp nhiều tài liệu, thư viện và công cụ hỗ trợ. MERN stack cũng đang được sử dụng rộng rãi trong nhiều dự án phát triển web, từ các ứng dụng nhỏ đến các ứng dụng lớn và phức tạp.

22/09/2025

Trích đoạn nội dung tài liệu

CHƯƠNG I: GIỚI THIỆU CHUNG I. ĐỀ TÀI: - Công nghệ tìm hiểu: MERN (MongoDB, ExpressJS, ReactJS, NodeJS). - Ứng dụng xây dựng: Website Social Butterfly (Website mạng xã hội). LÝ DO CHỌN ĐỀ TÀI: Những năm gần đây, mạng xã hội (MXH) đã có bước phát triển mạnh mẽ, tác động lớn đến đời sống xã hội ở hầu hết các quốc gia trên thế giới, trong đó có Việt Nam.

MXH đã trở thành một thuật ngữ phổ biến với những tính năng đa dạng cho phép người dùng kết nối, chia sẻ, tiếp nhận thông tin một cách nhanh chóng, hiệu quả. Nói chung, mạng xã hội đã và đang ảnh hưởng rất lớn (cả tích cực và tiêu cực) đến mọi hoạt động và sinh hoạt của con người, nhất là giới trẻ. Với đặc điểm nổi trội là tính kết nối nhanh, chia sẻ rộng, chỉ cần một chiếc điện thoại hay một máy tính kết nối Internet, chúng ta có thể truy cập và tham gia vào rất nhiều trang mạng như: Facebook, Zalo, Youtube, Twitter… trong đó, phổ biến nhất là Facebook. Mặc dù mục đích, cách thức, mức độ tham gia các trang mạng xã hội của mỗi người khác nhau nhưng có một điểm chung đó là xem nó như là một phần không thể thiếu trong đời sống tinh thần của con người.

Đặc biệt, trong giai đoạn phòng và chống dịch Covid-19 vô cùng căng thẳng và khó khăn như hiện nay, dưới sự chỉ đạo của Nhà nước về các quy định giãn cách xã hội, hạn chế tụ tập đông người, cũng như hạn chế các hoạt động giao tiếp hằng ngày giữa người với người với nhau, điều này đã ảnh hưởng rất nhiều đến trải nghiệm của người dùng đối với các nhu cầu hằng ngày, trong đó có nhu cầu giao tiếp với người thân, bạn bè, bạn đồng nghiệp và các mối quan hệ khác. Nhận thấy điều đó, cùng với vị trí và vai trò của thời đại công nghệ 5.0, nhóm chúng em quyết định làm WEBSITE MẠNG XÃ HỘI – SOCIAL BUTTERFLY để trở thành phương tiện kết nối từ xa hỗ trợ quá trình giao tiếp giữa người với người. Ứng dụng này không những có thể đảm bảo an toàn sức khỏe cho người dùng mà còn có thể đáp ứng được các nhu cầu cần thiết về quá trình giao tiếp như trò chuyện, chia sẻ những trải nghiệm cuộc sống thông qua những bài viết, tương tác trực tiếp qua các cuộc gọi. ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 9 III.

TÓM TẮT ĐỀ TÀI: Website mạng xã hội là cầu nối hỗ trợ việc giao tiếp giữa người với người dưới nhiều hình thức đa dạng như là nhắn tin, tương tác hay bình luận bài viết, trò chuyện qua cuộc gọi, vv… Trong bối cảnh công nghệ đang ngày càng chiếm ưu thế và đóng vai trò to lớn trong các hoạt động kinh tế lẫn cuộc sống con người hiện nay, đặc biệt là tình hình dịch bệnh Covid, vì chủ trương hạn chế lây lan, bảo vệ sức khỏe và tính mạng con người, khi đó hoạt động giao tiếp hằng ngày không thể nào diễn ra một các trực tiếp với nhau được bởi vì các hoạt động tụ tập thành nhóm bị hạn chế, thậm chí là cấm. Khi đó, một bài toán xã hội được đặt ra là làm thế nào để giữa người với người vẫn có thể giao tiếp được với nhau và vẫn có thể đảm bảo sức khỏe và tuân theo chủ trương phòng chống dịch bệnh của nhà nước. Bên cạnh đó, một số người mắc phải hội chứng ngại giao tiếp mặt đối mặt, đối với các hoạt động giao tiếp trực tiếp họ thường lúng túng và không thể giao tiếp một cách trôi chảy như những người bình thường thường hay làm, ngược lại họ lại cảm thấy dễ dàng giao tiếp, bày tỏ thông qua các phương tiện thứ ba khác. Mặt khác, rào cản về địa lý cũng là một điều gây cản trở quá trình giao tiếp.

Vì vậy, mạng xã hội ra đời với mục tiêu giải quyết được các vấn đề trên. MỤC TIÊU CỦA ĐỀ TÀI: - Xây dựng Website mạng xã hội cung cấp các chức năng cơ bản hỗ trợ trong quá trình giao tiếp từ xa giữa người với người với nhau, cụ thể là việc nhắn tin trao đổi, chia sẽ cuộc sống hằng ngày thông qua các bài đăng, trò chuyện qua cuộc gọi, video call, tương tác bình luận giữa nhiều người dùng với nhau trên một bài viết, vv… - Nghiên cứu các công nghệ liên quan để phát triển ứng dụng. - Đưa ra các báo cáo và tài liệu cho môn học. PHƯƠNG PHÁP NGHIÊN CỨU: - Nghiên cứu các tài liệu về nghiệp vụ liên quan cách xây dựng giao diện và các hoạt động của các trang mạng xã hội.

- Tiến hình khảo sát lấy yêu cầu thực tế từ người dùng. - Tham khảo một số website mạng xã hội như: Facebook, Instagram, Zalo, Twitter, vv… - Nghiên cứu các tài liệu, video hướng dẫn liên quan cách sử dụng các công nghệ mới vào quá trình xây dựng website, cụ thể là cách xây dựng theo MERN. ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 10 VI. Ý NGHĨA VÀ KẾT QUẢ CỦA HƯỚNG ĐỀ TÀI: 1.

Về mặt sản phẩm: - Tạo ra được website mạng xã hội, đảm bảo có thể kết nối giữa các người dùng từ xa. - Các chức năng hướng về người dùng. - Cung cấp được các chức năng cơ bản của một website mạng xã hội cần có, đặc biệt là các vấn đề liên quan phản hồi, tương tác theo thời gian thực. Về mặt tài liệu: - Các thông tin được ghi trong tài liệu trở thành nguồn tham khảo, kiến thức cho việc áp dụng các công nghệ đã sử dụng vào các đồ án xây dựng ứng dụng có liên quan như: MongoDB, ExpressJS, ReactJS, NodeJS vv… ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 11 CHƯƠNG II: CÔNG NGHỆ LIÊN QUAN I.

TÌM HIỂU VỀ MONGODB: 1. NoSQL là gì: - NoSQL là 1 dạng CSDL mã nguồn mở và được viết tắt bởi: None-Relational SQL hay có nơi thường gọi là Not-Only SQL. - NoSQL được phát triển trên Javascript Framework với kiểu dữ liệu là JSON và dạng dữ liệu theo kiểu key và value. - NoSQL ra đời như là 1 mảnh vá cho những khuyết điểm và thiếu xót cũng như hạn chế của mô hình dữ liệu quan hệ RDBMS (Relational Database Management System - Hệ quản trị cơ sở dữ liệu quan hệ) về tốc độ, tính năng, khả năng mở rộng,.

- Với NoSQL bạn có thể mở rộng dữ liệu mà không lo tới những việc như tạo khóa ngoại, khóa chính, kiểm tra ràng buộc vv… - NoSQL bỏ qua tính toàn vẹn của dữ liệu và transaction để đổi lấy hiệu suất nhanh và khả năng mở rộng. - NoSQL được sử dụng ở rất nhiều công ty, tập đoàn lớn, ví dụ như FaceBook sử dụng Cassandra do FaceBook phát triển, Google phát triển và sử dụng BigTable, vv… ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 12 2. MongoDB là gì: - MongoDB là một hệ quản trị cơ sở dữ liệu mã nguồn mở, là CSDL thuộc NoSql và được hàng triệu người sử dụng. - MongoDB là một database hướng tài liệu (document), các dữ liệu được lưu trữ trong document kiểu JSON thay vì dạng bảng như CSDL quan hệ nên truy vấn sẽ rất nhanh.

- Với CSDL quan hệ chúng ta có khái niệm bảng, các cơ sở dữ liệu quan hệ (như MySQL hay SQL Server.) sử dụng các bảng để lưu dữ liệu thì với MongoDB chúng ta sẽ dùng khái niệm là collection thay vì bảng - So với RDBMS thì trong MongoDB collection ứng với table, còn document sẽ ứng với row , MongoDB sẽ dùng các document thay cho row trong RDBMS. - Các collection trong MongoDB được cấu trúc rất linh hoạt, cho phép các dữ liệu lưu trữ không cần tuân theo một cấu trúc nhất định. - Thông tin liên quan được lưu trữ cùng nhau để truy cập truy vấn nhanh thông qua ngôn ngữ truy vấn MongoDB. Ưu điểm của MongoDB: - Do MongoDB sử dụng lưu trữ dữ liệu dưới dạng Document JSON nên mỗi một collection sẽ có các kích cỡ và các document khác nhau, linh hoạt trong việc lưu trữ dữ liệu, nên bạn muốn gì thì cứ insert vào thoải mái.

- Dữ liệu trong MongoDB không có sự ràng buộc lẫn nhau, không có join như trong RDBMS nên khi insert, xóa hay update nó không cần phải mất thời gian kiểm tra xem có thỏa mãn các ràng buộc dữ liệu như trong RDBMS. - MongoDB rất dễ mở rộng (Horizontal Scalability). Trong MongoDB có một khái niệm cluster là cụm các node chứa dữ liệu giao tiếp với nhau, khi muốn mở rộng hệ thống ta chỉ cần thêm một node với vào cluster: - Trường dữ liệu “_id” luôn được tự động đánh index (chỉ mục) để tốc độ truy vấn thông tin đạt hiệu suất cao nhất. ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 13 - Khi có một truy vấn dữ liệu, bản ghi được cached lên bộ nhớ Ram, để phục vụ lượt truy vấn sau diễn ra nhanh hơn mà không cần phải đọc từ ổ cứng.

- Hiệu năng cao: Tốc độ truy vấn (find, update, insert, delete) của MongoDB nhanh hơn hẳn so với các hệ quản trị cơ sở dữ liệu quan hệ (RDBMS). Với một lượng dữ liệu đủ lớn thì thử nghiệm cho thấy tốc độ insert của MongoDB có thể nhanh tới gấp 100 lần so với MySQL. Nhược điểm của MongoDB: - Một ưu điểm của MongoDB cũng chính là nhược điểm của nó. MongoDB không có các tính chất ràng buộc như trong RDBMS nên khi thao tác với mongoDB thì phải hết sức cẩn thận.

- Tốn bộ nhớ do dữ liệu lưu dưới dạng key-value, các collection chỉ khác về value do đó key sẽ bị lặp lại. Không hỗ trợ join nên dễ bị dữ thừa dữ liệu. - Khi insert/update/remove bản ghi, MongoDB sẽ chưa cập nhật ngay xuống ổ cứng, mà sau 60 giây MongoDB mới thực hiện ghi toàn bộ dữ liệu thay đổi từ RAM xuống ổ cứng điêù này sẽ là nhược điểm vì sẽ có nguy cơ bị mất dữ liệu khi xảy ra các tình huống như mất điện. ĐỒ ÁN 2 – TÌM HIỂU VỀ MÔ HÌNH MERN VÀ XÂY DỰNG WEBSITE MẠNG XÃ HỘI 14 II.

TÌM HIỂU VỀ EXPRESSJS: 1. ExpressJS là gì: - ExpressJS hay còn được viết là Express js, Express. Đây là một framework mã nguồn mở miễn phí cho NodeJS.js được sử dụng trong thiết kế và xây dựng các ứng dụng web một cách đơn giản và nhanh chóng. - Vì ExpressJS chỉ yêu cầu ngôn ngữ lập trình Javascript nên việc xây dựng các ứng dụng web và API trở nên đơn giản hơn với các lập trình viên và nhà phát triển.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ