Tải bản đầy đủ (.pdf) (78 trang)

Đồ án xây dựng website mạng xã hội kreat

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.93 MB, 78 trang )

ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA CÔNG NGHỆ PHẦN MỀM
-----🙞🙜🕮🙞🙜-----

BÁO CÁO ĐỒ ÁN

ĐỒ ÁN 1

ĐỀ TÀI:

Xây dựng Website Mạng xã hội - KreaT
Giảng viên hướng dẫn:
Cô Trần Thị Hồng Yến
Sinh viên thực hiện:
Trần Quang Tin
Trần Duy Khơi

20522018
20521483

TP. Hồ Chí Minh, ngày 06 tháng 07 năm 2023

1


LỜI CẢM ƠN
Sau quá trình học tập và rèn luyện tại khoa Công nghệ phần mềm trường Đại học
Công nghệ Thơng tin – ĐHQG TP.HCM, nhóm em đã được trang bị các kiến thức cơ
bản cùng các kỹ năng thực tế để có thể hồn thành Đờ án của nhóm.
Để hồn thành đờ án này, với lịng biết ơn sâu sắc nhóm xin gửi lời cảm ơn chân


thành đến: Ban Giám hiệu trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM vì
đã tạo điều kiện thuận lợi để sinh viên tìm kiếm, nghiên cứu thơng tin với hệ thống thư
viện hiện đại, đa dạng các loại sách và tài liệu
Gần gũi hơn là những lời tốt đẹp nhất xin gửi đến đến cơ Trần Thị Hờng ́n đã tận
tình giúp đỡ, định hướng cách tư duy và hướng làm việc khoa học. Đó là những góp ý
hết sức quý báu khơng chỉ trong q trình thực hiện đờ án mà còn là hành trang tiếp
bước cho em trong quá trình học tập và làm việc sau này.
Sau cùng, xin chúc quý Thầy Cô trong khoa Công nghệ Phần mềm nói riêng cũng
như các giáo viên tại trường Cơng nghệ thơng tin nói chung thật dời dào sức khỏe, niềm
tin để tiếp tục thực hiện sứ mệnh cao đẹp của mình.
Thành phố Hờ Chí Minh, 06 tháng 07 năm 2023
Trần Quang Tin & Trần Duy Khôi


NHẬN XÉT CỦA GIẢNG VIÊN
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................

..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................


Mục Lục
Chương 1: MỞ ĐẦU ............................................................................................................. 10
1.1. Lý do chọn đề tài ........................................................................................................... 10
1.1.1. Tại sao bạn nên sử dụng mạng xã hội KreaT ........................................................ 10
1.2. Đối tượng hướng đến .................................................................................................... 11
1.3. Khảo sát hiện trạng ........................................................................................................ 11
1.3.1. Facebook ................................................................................................................ 11
1.3.2. Instagram................................................................................................................ 12
1.4. Mục tiêu đề tài ............................................................................................................... 14
1.5. Phương pháp thực hiện .................................................................................................. 15
Chương 2: GIỚI THIỆU VỀ CÔNG NGHỆ SỬ DỤNG ................................................... 16
2.1. Tổng quan về ngôn ngữ lập trình JavaScript ................................................................ 16
2.2. Tởng quan về ReactJS ................................................................................................... 17
2.3. Tổng quan về NodeJS ................................................................................................... 19
2.4. Tổng quan về ExpressJS ............................................................................................... 21
2.5. Tổng quan về MongoDB ............................................................................................... 23
2.6. Tổng quan về Mongoose ............................................................................................... 24
2.7. Tổng quan về JSON Web Token .................................................................................. 26

2.8. Tổng quan về Socket.IO ................................................................................................ 28
Chương 3: PHÂN TÍCH THIẾT KẾ ỨNG DỤNG ............................................................ 31
3.1. Kiến trúc ứng dụng ........................................................................................................ 31


3.2. Phân tích thiết kế ........................................................................................................... 32
3.2.1. Sơ đờ Use-case ....................................................................................................... 32
3.2.2. Bảng danh sách Use-case ....................................................................................... 32
3.2.3. Đặc tả Use-case ...................................................................................................... 34
3.2.4. Sơ đồ lớp ................................................................................................................ 56
Chương 4: XÂY DỰNG ỨNG DỤNG ................................................................................. 67
4.1. Giao diện ứng dụng ....................................................................................................... 67
4.1.1. Màn hình đăng nhập .............................................................................................. 67
4.1.2. Màn hình đăng ký .................................................................................................. 67
4.1.3. Màn hình chính ...................................................................................................... 68
4.1.4. Màn hình hồ sơ cá nhân ......................................................................................... 70
Chương 5: TỔNG KẾT ......................................................................................................... 76
5.1. Đánh giá ........................................................................................................................ 76
5.1.1. Thuận lợi ................................................................................................................ 76
5.1.2. Khó khăn ................................................................................................................ 76
5.2. Kết luận ......................................................................................................................... 76
5.2.1. Kết quả đạt được .................................................................................................... 76
5.2.2. Ưu điểm của ứng dụng ........................................................................................... 77
5.2.3. Nhược điểm của ứng dụng ..................................................................................... 77
5.3. Hướng phát triển ........................................................................................................... 77
TÀI LIỆU THAM KHẢO..................................................................................................... 78


Danh Mục Hình Ảnh
Hình 1.1 Giao diện Facebook ......................................................................................................... 12

Hình 1.2 Giao diện Instagram ........................................................................................................ 13
Hình 2.1 Javascript ........................................................................................................................ 16
Hình 2.2 React ................................................................................................................................ 18
Hình 2.3 NodeJS ............................................................................................................................. 19
Hình 2.4 ExpressJS ......................................................................................................................... 21
Hình 2.5 MongoDB ........................................................................................................................ 23
Hình 2.6 Mongoose ........................................................................................................................ 25
Hình 2.7 Jason Web Token ............................................................................................................ 27
Hình 2.8 Socket.io .......................................................................................................................... 28
Hình 3.1 Kiến trúc ứng dụng .......................................................................................................... 31
Hình 3.2 Use-case tởng quát........................................................................................................... 32
Hình 4.1 Màn hình đăng nhập ........................................................................................................ 67
Hình 4.2 Màn hình đăng ký ............................................................................................................ 68
Hình 4.3 Màn hình chính ................................................................................................................ 69
Hình 4.4 Màn hình bài post ............................................................................................................ 70
Hình 4.5 Màn hình timeline 1 ........................................................................................................ 71
Hình 4.6 Màn hình timeline 2 ........................................................................................................ 71
Hình 4.7 Màn hình about ................................................................................................................ 72
Hình 4.8 Màn hình cập nhật thơng tin cơ bản ................................................................................ 73
Hình 4.9 Màn hình quản lý bạn bè ................................................................................................. 74
Hình 4.10 Màn hình lịch sử ảnh và video ...................................................................................... 75


Danh Mục Bảng
Bảng 3.1 Danh sách User-case ....................................................................................................... 32
Bảng 3.2 Đặc tả use-case đăng nhập .............................................................................................. 34
Bảng 3.3 Đặc tả use-case đăng ký .................................................................................................. 35
Bảng 3.4 Đặc tả use-case cập nhật ảnh đại diện............................................................................. 37
Bảng 3.5 Đặc tả use-case xem thông tin cơ bản ............................................................................. 38
Bảng 3.6 Đặc tả use-case cập nhật thông tin cơ bản ...................................................................... 39

Bảng 3.7 Đặc tả use-case đăng bài ................................................................................................. 40
Bảng 3.8 Đặc tả use-case chỉnh sửa bài đăng ................................................................................. 41
Bảng 3.9 Đặc tả use-case xóa bài đăng .......................................................................................... 42
Bảng 3.10 Đặc tả use-case bình luận .............................................................................................. 43
Bảng 3.11 Đặc tả use-case chỉnh sửa bình luận ............................................................................ 44
Bảng 3.12 Đặc tả use-case xóa bình luận ....................................................................................... 45
Bảng 3.13 Đặc tả use-case thả cảm xúc ......................................................................................... 46
Bảng 3.14 Đặc tả use-case chỉnh sửa cảm xúc ............................................................................... 47
Bảng 3.15 Đặc tả use-case hủy cảm xúc ........................................................................................ 49
Bảng 3.16 Đặc tả use-case xem thông tin bạn bè ........................................................................... 50
Bảng 3.17 Đặc tả use-case quản lý lời mời kết bạn ....................................................................... 51
Bảng 3.18 Đặc tả use-case hủy kết bạn .......................................................................................... 52
Bảng 3.19 Đặc tả use-case trò chuyện ............................................................................................ 54
Bảng 3.20 Đặc tả use-case thông báo ............................................................................................. 55
Bảng 3.21 Bảng ACCOUNT .......................................................................................................... 57
Bảng 3.22 Bảng REACT ................................................................................................................ 58
Bảng 3.23 Bảng CONVERSATION .............................................................................................. 58
Bảng 3.24 Bảng MESSAGE .......................................................................................................... 59
Bảng 3.25 Bảng FRIEND_REQUEST ........................................................................................... 60
Bảng 3.26 Bảng NOTIFICATION ................................................................................................. 60
Bảng 3.27 Bảng EDUCATION_INFO .......................................................................................... 61


Bảng 3.28 Bảng PERSONAL_INFO ............................................................................................. 62
Bảng 3.29 Bảng FAVORITE_INFO .............................................................................................. 63
Bảng 3.30 Bảng OTHER_INFO .................................................................................................... 64
Bảng 3.31 Bảng POST ................................................................................................................... 64
Bảng 3.32 Bảng VISUAL_MEDIA ............................................................................................... 65
Bảng 3.33 Bảng COMMENT ......................................................................................................... 66



Tóm Tắt Đồ Án
Sau đây, nhóm chúng em sẽ trình bày về phần mềm, quy trình thiết kế giao diện
và giao diện hồn chỉnh qua các chương sau:
• Chương 1: Mở Đầu
• Chương 2: Giới Thiệu Về Cơng Nghệ Sử Dụng
• Chương 3: Phân tích thiết kế ứng dụng
• Chương 4: Xây dựng ứng dụng
• Chương 5: Tởng kết

9


Chương 1: MỞ ĐẦU
1.1. Lý do chọn đề tài
Lý do nhóm em chọn đề tài này là vì nhận thấy các sinh viên khác thường làm các
ứng dụng thiên về quản lý, mua bán,... Nhóm em muốn làm mợt thứ gì đó mới mẻ, lạ
lẫm hơn. Đờng thời cũng muốn cho bản thân một thử thách khi làm một ứng dụng có
quy mơ khơng nhỏ như mạng xã hợi. Vì vậy, các thành viên đã bàn bạc và đưa đến
quyết định xây dựng ứng dụng website mạng xã hội KreaT.
1.1.1. Tại sao bạn nên sử dụng mạng xã hội KreaT
-Giao tiếp và kết nối: Mạng xã hội cho phép bạn giao tiếp và kết nối với bạn bè, gia
đình và người thân khắp nơi trên thế giới. Bạn có thể gửi tin nhắn, chia sẻ ảnh, video
và thông tin cá nhân để duy trì mối quan hệ với những người quan trọng trong cuộc
sống của bạn.
-Chia sẻ thông tin và ý kiến: Mạng xã hội là một nơi để chia sẻ thông tin, suy nghĩ, ý
kiến và quan điểm của bạn với mọi người. Bạn có thể tham gia và đóng góp vào các
c̣c thảo luận về các chủ đề quan tâm, nhận được thông tin mới và tiếp cận với nhiều
quan điểm khác nhau.
-Tiếp cận thơng tin nhanh chóng: Mạng xã hội cung cấp cho bạn cập nhật nhanh về

tin tức, sự kiện, xu hướng và thông tin quan trọng khác từ khắp nơi trên thế giới. Bạn
có thể theo dõi trang tin, trang fanpage và trang cá nhân của các tổ chức, người nổi
tiếng, và những người bạn quan tâm để được thông tin mới nhất.
-Quảng bá và xây dựng thương hiệu cá nhân: Nếu bạn là một nhà kinh doanh, nghệ
sĩ hoặc người muốn xây dựng một thương hiệu cá nhân, mạng xã hội là một nền tảng
hữu ích để quảng bá sản phẩm, dịch vụ hoặc tài năng của bạn. Bạn có thể tạo nợi dung
sáng tạo, chia sẻ thông tin về công việc của bạn và tương tác với khách hàng, người
hâm mộ hoặc cộng đờng của mình.
-Học tập và nghiên cứu: Mạng xã hợi cung cấp một nguồn tài nguyên phong phú để
học tập và nghiên cứu. Bạn có thể tham gia vào các nhóm chuyên đề, theo dõi trang

10


cá nhân của những người có kiến thức chuyên sâu trong lĩnh vực mình quan tâm và
tìm kiếm thơng tin, tài liệu học tập từ cộng đồng mạng xã hội.
-Giải trí và thư giãn: Mạng xã hợi cung cấp nhiều nợi dung giải trí như video, hình
ảnh, trị chơi và nợi dung hài hước. Bạn có thể tận hưởng thời gian rảnh rỗi bằng cách
xem nội dung hấp dẫn, theo dõi các trang giải trí hoặc kết nối với cợng đờng có sở
thích giống nhau.
1.2. Đối tượng hướng đến
Mạng xã hội KreaT hướng đến tất cả người dùng, đặc biệt là những người quan tâm
đến việc tạo, chia sẻ và tương tác với nợi dung hình ảnh. KreaT khơng biệt giới tính,
đợ t̉i, dân tợc, quốc tịch,...
1.3. Khảo sát hiện trạng
Hiện nay trên thế giới đã có nhiều ứng dụng mạng xã hợi quen tḥc, có thể kể đến
như: Facebook, Instagram, Twitter, Tiktok… Ta cùng đi qua một số thông tin chung
của các ứng dụng này.

1.3.1. Facebook

1.3.1.1. Giới thiệu chung
Facebook là mạng xã hội trực tuyến lớn nhất và phổ biến nhất trên thế giới. Nó được
thành lập vào năm 2004 bởi Mark Zuckerberg và mợt nhóm sinh viên Đại học
Harvard. Ban đầu, Facebook chỉ dành riêng cho sinh viên đại học, nhưng sau đó đã
mở rợng để cho phép mọi người trên 13 tuổi tham gia.
1.3.1.2. Giao diện

11


Hình 1.1 Giao diện Facebook

-

1.3.1.3. Một số tính năng chính của ứng dụng
Bảng tin: Hiển thị nội dung mới nhất từ bạn bè và trang được theo dõi, bao gồm

cập nhật trạng thái, ảnh và video.
-

Trang cá nhân: Mỗi người dùng có mợt trang cá nhân cá nhân, nơi họ có thể chia

sẻ thơng tin cá nhân, ảnh, video và các chi tiết khác.
-

Kết bạn: Người dùng có thể kết bạn với người khác trên Facebook bằng cách gửi

lời mời kết bạn và chấp nhận lời mời từ người khác.
-


Nhóm: Cho phép người dùng tham gia và tạo các nhóm chuyên đề để chia sẻ,

thảo luận và tương tác với những người có sở thích chung.
-

Trang doanh nghiệp: Cho phép các doanh nghiệp, thương hiệu và cá nhân nổi

tiếng tạo trang đặc biệt để quảng bá và tương tác với khách hàng.
-

Tin nhắn: Người dùng có thể gửi tin nhắn riêng tư cho bạn bè và gia đình, thực

hiện c̣c trị chuyện mợt-đến-mợt hoặc nhóm.

1.3.2. Instagram

12


1.3.2.1. Giới thiệu chung
Instagram là một ứng dụng mạng xã hợi chia sẻ hình ảnh và video, được thành lập
vào năm 2010 bởi Kevin Systrom và Mike Krieger. Ban đầu, Instagram chỉ cho phép
người dùng chia sẻ ảnh, nhưng sau đó đã mở rợng để bao gờm cả video và nhiều tính
năng khác.
Instagram nhanh chóng trở thành mợt trong những ứng dụng mạng xã hội phổ biến
nhất trên thế giới, với hàng tỷ người dùng trên tồn cầu. Nó tạo ra một không gian
tương tác năng động, nơi người dùng có thể chia sẻ những khoảnh khắc c̣c sống,
nghệ thuật, du lịch, thời trang và nhiều nội dung khác.
1.3.2.2. Giao diện


Hình 1.2 Giao diện Instagram

-

1.3.2.3. Một số tính năng chính của ứng dụng
Ảnh và video: Người dùng có thể chụp và chia sẻ ảnh hoặc quay video ngắn từ

điện thoại di đợng của mình. Instagram cung cấp các bợ lọc và cơng cụ chỉnh sửa để
tạo ra những hình ảnh và video đẹp và sáng tạo.
-

Dòng thời gian: Hiển thị những bức ảnh và video mới nhất từ người bạn theo dõi

trên mợt trang chính. Bạn có thể thả tim (like), bình luận và chia sẻ nợi dung của

13


người khác.
-

Stories: Cho phép người dùng chia sẻ nội dung tạm thời trong 24 giờ, bao gồm

ảnh, video, và các tính năng như hình dán, hỏi đáp, câu chuyện vịng (boomerang),
và thăm dò ý kiến.
-

IGTV: Nền tảng video dài hơn cho phép người dùng tạo và chia sẻ video dài hơn

1 phút, tạo điều kiện thuận lợi cho việc xem các video nội dung dài hơn.

-

Thẻ (tag) và Hashtag: Người dùng có thể gắn thẻ tên người khác trong ảnh hoặc

sử dụng hashtag để tìm kiếm và nhóm các nợi dung có chung mợt chủ đề.
-

Khám phá: Trang "Khám phá" giúp người dùng khám phá những nội dung phù

hợp dựa trên sở thích và hoạt đợng trước đó.
1.4. Mục tiêu đề tài
Sau khi sử dụng và đưa ra những nhận xét về ưu nhược điểm của một vài ứng dụng
mạng xã hội quen thuộc, chúng em muốn triển khai một ứng dụng có thể đáp ứng các
nhu cầu sau:
-

Tạo ra một cộng đồng kết nối: Mạng xã hội KreaT nhắm đến việc tạo ra một

cộng đồng kết nối giữa những người có sở thích, sự quan tâm và mục tiêu chung.
Mục tiêu là tạo ra một không gian cho người dùng giao tiếp, chia sẻ thông tin và xây
dựng mối quan hệ.
-

Cung cấp nền tảng chia sẻ nội dung: Mạng xã hội KreaT nhắm đến việc cung cấp

một nền tảng cho người dùng chia sẻ nội dung, bao gồm ảnh, tin nhắn, trạng thái và
nhiều hình thức khác. Mục tiêu là tạo ra mợt khơng gian mà người dùng có thể tự do
và dễ dàng chia sẻ những trải nghiệm, ý tưởng và thơng tin cá nhân của mình.
-


Tạo ra trải nghiệm tương tác: Mạng xã hội KreaT nhắm đến việc tạo ra trải

nghiệm tương tác đáng nhớ cho người dùng. Mục tiêu là tạo ra các tính năng và chức
năng giúp người dùng kết nối, tương tác và tham gia vào các hoạt đợng như thả tim,
bình luận, chia sẻ,...
-

Đem lại giá trị và hỗ trợ cho người dùng:Mạng xã hội KreaT nhắm đến việc đem

lại giá trị và hỗ trợ cho người dùng. Mục tiêu là cung cấp thơng tin hữu ích, giải trí,

14


giáo dục hoặc tạo ra một môi trường nơi người dùng có thể tìm kiếm sự hỗ trợ từ
cợng đờng hoặc từ những nguồn tài nguyên khác.
1.5. Phương pháp thực hiện

-

Tìm hiểu và đánh giá các giải pháp hiện có.

-

Đề xuất, cải thiện các tính năng cần thiết.

-

Tham khảo ý kiến giảng viên hướng dẫn để có định hướng tốt nhất.


-

Phân tích và thiết kế hệ thống.

-

Xây dựng ứng dụng.

-

Kiểm thử, triển khai và đánh giá kết quả.

15


Chương 2: GIỚI THIỆU VỀ CƠNG NGHỆ SỬ DỤNG
2.1. Tởng quan về ngôn ngữ lập trình JavaScript
JavaScript (JS) là một ngơn ngữ lập trình phía client (thực thi trên trình duyệt) phở
biến và mạnh mẽ. Nó được sử dụng để tạo ra các ứng dụng web tương tác, cung cấp
tính năng động và tương tác với người dùng. JavaScript cũng được sử dụng trong
phát triển ứng dụng di động, ứng dụng máy chủ và các dự án phát triển phía backend.

Hình 2.1 Javascript
-

Ưu điểm:



Đa nền tảng: JavaScript có thể chạy trên nhiều nền tảng khác nhau, bao gờm trình


duyệt web và mơi trường phía máy chủ như Node.js.


Tính tương tác: JavaScript cho phép tương tác trực tiếp với người dùng trên trình

duyệt, tạo ra các trang web tương tác cao và trải nghiệm người dùng tốt hơn.


Dễ học và sử dụng: JavaScript có cú pháp đơn giản và dễ hiểu, giúp người mới

học nhanh chóng tiếp cận và phát triển ứng dụng một cách dễ dàng.


Hỗ trợ mạnh mẽ từ cợng đờng: JavaScript có mợt cợng đờng phong phú và nhiều

tài liệu học tập, thư viện và framework hữu ích để giúp phát triển ứng dụng một cách

16


nhanh chóng và hiệu quả.


Tính linh hoạt: JavaScript cho phép tích hợp dễ dàng với HTML và CSS, cũng

như hỗ trợ tính năng đợng và xử lý dữ liệu phía client.

-


Nhược điểm:



Do JavaScript chạy trên trình duyệt của người dùng, có thể dễ dàng bị tấn cơng

bởi các lỗ hởng bảo mật. Điều này đòi hỏi nhà phát triển phải thận trọng khi xử lý dữ
liệu và thực hiện biện pháp bảo mật phù hợp.


JavaScript không cung cấp các cấu trúc tổ chức mã lớn như module hay

namespace một cách tự nhiên. Điều này có thể gây khó khăn trong quản lý mã khi
xây dựng các ứng dụng phức tạp.


Mỗi trình duyệt có thể có mợt phiên bản JavaScript và hỗ trợ tính năng khác

nhau, điều này địi hỏi phải kiểm tra và xử lý mã cho từng trình duyệt khác nhau để
đảm bảo tương thích.


JavaScript khơng có khả năng xử lý đa luồng hoặc đa xử lý trực tiếp, nhưng có

các cơng nghệ và cách tiếp cận khác nhau để xử lý tác vụ phức tạp và bất đồng bộ
trong môi trường web.

2.2. Tổng quan về ReactJS
ReactJS (thường gọi là React) là một thư viện JavaScript phát triển bởi Facebook. Nó
được sử dụng để xây dựng giao diện người dùng (UI) cho các ứng dụng web đơn

trang (Single Page Applications) và ứng dụng di động. React được thiết kế để tạo ra
các UI tương tác và linh hoạt, dựa trên khái niệm của các thành phần (components).
Mỗi thành phần trong React đại diện cho một phần nhỏ của giao diện người dùng và
có thể được xây dựng, kết hợp và tái sử dụng một cách dễ dàng.

17


Hình 2.2 React

-

Ưu điểm:



Hiệu suất cao: React sử dụng Virtual DOM để cập nhật hiệu quả và chỉ cập nhật

những phần thay đổi thực sự trong giao diện người dùng, giúp tối ưu hiệu suất ứng
dụng.



Quản lý trạng thái dễ dàng: React sử dụng mơ hình unidirectional data flow (dịng

dữ liệu một chiều) và hỗ trợ quản lý trạng thái (state) một cách dễ dàng thông qua các
thành phần (components). Điều này giúp duy trì mã dễ đọc, dễ hiểu và dễ bảo trì.




Tái sử dụng thành phần: React khuyến khích việc tái sử dụng thành phần, cho

phép bạn xây dựng giao diện theo cách modulized và dễ dàng mở rộng ứng dụng.



Thân thiện với SEO: SEO là một phần không thể thiếu để đưa thông tin website

lên top đầu tìm kiếm của Google. Bản chất Reactjs là mợt thư viện JavaScript, Google
Search Engine hiện nay đã crawl và index được code JavaScript.



Debug dễ dàng: Facebook đã phát hành 1 Chrome extension dùng trong việc

debug trong quá trình phát triển ứng dụng. Điều đó giúp tăng tốc q trình release sản
phẩm cũng như quá trình coding.
-

Nhược điểm:



Reactjs chỉ phục vụ cho tầng View. React chỉ là View Library nó khơng phải là

18


một MVC framework như những framework khác. Đây chỉ là thư viện của Facebook
giúp render ra phần view. Vì thế React sẽ khơng có phần Model và Controller, mà

phải kết hợp với các thư viện khác. React cũng sẽ không có 2-way binding hay là
Ajax.



Tích hợp Reactjs vào các framework MVC truyền thống yêu cầu cần phải cấu

hình lại.



React khá nặng nếu so với các framework khác React có kích thước tương tương

với Angular (Khoảng 35kb so với 39kb của Angular). Trong khi đó Angular là mợt
framework hồn chỉnh.
2.3. Tởng quan về NodeJS
Node.js là một môi trường chạy mã JavaScript ở phía máy chủ (server-side) được xây
dựng dựa trên nền tảng Chrome V8 JavaScript Engine. Điều này cho phép bạn chạy
mã JavaScript trên máy chủ, thay vì chỉ chạy trong trình duyệt. Node.js cho phép phát
triển ứng dụng web đa nền tảng với khả năng xử lý đồng thời (asynchronous) cao.

Hình 2.3 NodeJS

-

Ưu điểm:



Hiệu suất cao: Node.js sử dụng mô hình khơng đờng bợ (non-blocking) và sự


kiện xảy ra dựa trên callback, cho phép xử lý đồng thời nhiều yêu cầu mà không chờ

19


đợi kết quả trước khi tiếp tục. Điều này giúp Node.js có hiệu suất cao và đáp ứng tốt
trong khi xử lý nhiều yêu cầu đồng thời.



Xử lý đồng thời (Concurrency): Nodejs hỗ trợ xử lý đồng thời thông qua mơ hình

sự kiện và non-blocking I/O. Điều này cho phép xử lý nhiều yêu cầu cùng một lúc
mà không làm chậm hoặc chặn l̀ng chính của ứng dụng.



Quản lý tốt các yêu cầu thời gian thực: Với khả năng xử lý đồng thời và hệ sinh

thái thư viện hỗ trợ, Nodejs thích hợp cho việc xây dựng các ứng dụng thời gian thực
như ứng dụng chat, ứng dụng trò chơi trực tuyến, ứng dụng phản hồi nhanh, v.v.



Sử dụng cùng ngôn ngữ JavaScript: Node.js sử dụng JavaScript, một ngôn ngữ

phổ biến và được sử dụng rộng rãi, giúp việc chuyển đởi giữa phía máy chủ và phía
máy khách (client) dễ dàng hơn. Lập trình viên có thể sử dụng cùng mợt ngơn ngữ để
phát triển cả phía máy chủ và phía máy khách của ứng dụng.




Cợng đờng phát triển đơng đảo: Node.js có mợt cợng đờng phát triển rợng lớn,

đóng góp vào việc phát triển thư viện, cơng cụ và tài liệu phong phú. Cộng đồng này
cung cấp sự hỗ trợ và khả năng mở rộng của Node.js.
-

Nhược điểm:



Đơn luồng (Single-threaded): Mặc dù Node.js có khả năng xử lý đờng thời,

nhưng nó vẫn chạy trên mợt l̀ng duy nhất. Điều này có nghĩa là nếu có mợt phần
tử xử lý gây chậm hoặc chặn l̀ng chính, nó có thể ảnh hưởng đến tất cả các yêu cầu
khác. Tuy nhiên, có thể sử dụng các cơ chế như clustering hoặc worker threads để
giải quyết vấn đề này.



Không phù hợp cho các tác vụ CPU-intensive: Do Node.js chạy trên mơ hình

single-threaded, nó khơng phù hợp cho các tác vụ địi hỏi nhiều xử lý CPU (CPUintensive). Nếu ứng dụng của bạn chủ ́u là xử lý CPU-intensive, thì mợt ngơn ngữ
khác như Python hoặc Java có thể là lựa chọn tốt hơn.



Quản lý bất đồng bộ (Asynchronous programming): Việc sử dụng callback hoặc


Promise để quản lý bất đờng bợ có thể làm cho mã trở nên phức tạp hơn và khó đọc.
Tuy nhiên, sử dụng các thư viện hỗ trợ như Async hoặc Promise-based libraries như

20


Bluebird có thể giúp giải qút vấn đề này.



Chưa ởn định trong việc quản lý bộ nhớ: Node.js không được xây dựng để quản

lý bộ nhớ dễ dàng như ngôn ngữ Java. Việc quản lý bợ nhớ trong Node.js địi hỏi sự
cẩn thận và kiểm sốt từ phía lập trình viên để tránh các vấn đề như memory leaks
hay Out of Memory errors.

2.4. Tổng quan về ExpressJS
Express.js là một framework phát triển ứng dụng web phía máy chủ (server-side)
được xây dựng dựa trên Node.js. Nó cung cấp các cơng cụ và tính năng giúp xây
dựng ứng dụng web nhanh chóng và dễ dàng.
Express.js giúp quản lý các yêu cầu HTTP, xử lý các định tuyến (routing), tạo và
quản lý các API, và thực hiện các tác vụ xử lý trên phía máy chủ. Nó cung cấp mợt
cấu trúc linh hoạt để phát triển ứng dụng web theo mơ hình MVC (Model-ViewController) hoặc các mơ hình tương tự.

Hình 2.4 ExpressJS

-

Ưu điểm:




Đơn giản và dễ học: Expressjs có mợt cú pháp đơn giản và dễ hiểu, giúp lập trình

21


viên nhanh chóng làm quen và phát triển ứng dụng web mợt cách dễ dàng. Nó khơng
có q nhiều quy tắc và cấu trúc phức tạp, cho phép bạn linh hoạt trong việc xây dựng
ứng dụng theo ý muốn.



Linh hoạt và mở rộng: Express.js cho phép bạn tự do xây dựng ứng dụng theo

cách bạn muốn, không hạn chế bởi các quy tắc hay kiểu kiến trúc cụ thể. Bạn có thể
sử dụng các thư viện, mơ-đun bên thứ ba, và công cụ phù hợp với nhu cầu cụ thể của
dự án.



Middleware mạnh mẽ: Expressjs cung cấp hệ thống middleware mạnh mẽ, cho

phép bạn xử lý các yêu cầu HTTP, thực hiện xác thực, xử lý lỗi, ghi log, và nhiều tác
vụ khác. Điều này giúp tăng tính tái sử dụng và quản lý chung của mã.



Hỗ trợ đa nền tảng: Express.js có khả năng chạy trên nhiều nền tảng, bao gồm


Windows, macOS, và Linux. Điều này cho phép bạn triển khai ứng dụng trên nhiều
môi trường và máy chủ.



Cộng đờng phát triển đơng đảo: Expressjs có mợt cợng đờng phát triển rợng lớn,

với nhiều tài liệu, mơ-đun, và ví dụ code có sẵn. Bạn có thể tìm thấy giải pháp cho
các vấn đề phát triển thông qua cộng đồng và nhận sự hỗ trợ từ cộng đồng này.

-

Nhược điểm:



Thiếu tính năng mặc định: Expressjs là mợt framework nhẹ, nên khơng cung cấp

nhiều tính năng mặc định như các framework lớn hơn. Điều này có thể địi hỏi bạn
phải triển khai các tính năng phụ trợ bằng cách sử dụng các thư viện và mô-đun bên
thứ ba.



Quản lý dự án lớn: Khi xây dựng các dự án lớn và phức tạp, việc quản lý mã

nguồn và cấu trúc dự án có thể trở nên phức tạp hơn. Express.js khơng cung cấp một
kiến trúc cụ thể hoặc quy tắc nghiêm ngặt, điều này yêu cầu bạn tổ chức và quản lý
mã ng̀n của mình mợt cách chặt chẽ.




u cầu hiểu biết về Nodejs: Expressjs là mợt framework xây dựng trên Node.js,

vì vậy để sử dụng hiệu quả Expressjs, bạn cần có kiến thức và hiểu biết cơ bản về

22


Node.js.
2.5. Tổng quan về MongoDB
MongoDB là một hệ quản trị cơ sở dữ liệu phi quan hệ (NoSQL database) mã ng̀n
mở. Nó được thiết kế để lưu trữ và quản lý dữ liệu phi cấu trúc (unstructured data) và
dữ liệu có cấu trúc linh hoạt (flexible structured data) trong các tài liệu JSON-like
được gọi là BSON (Binary JSON).
MongoDB khác biệt với hệ quản trị cơ sở dữ liệu SQL truyền thống bằng cách sử
dụng mơ hình lưu trữ dựa trên tài liệu (document-based storage) thay vì bảng và hàng
như trong SQL. Mỗi tài liệu trong MongoDB là một bản ghi đợc lập có thể chứa các
trường và giá trị khác nhau, tạo ra sự linh hoạt cao trong việc lưu trữ dữ liệu.

Hình 2.5 MongoDB

-

Ưu điểm:



Linh hoạt và mở rộng: MongoDB cho phép lưu trữ dữ liệu phi cấu trúc và có cấu


trúc linh hoạt, giúp bạn dễ dàng thay đởi cấu trúc dữ liệu theo nhu cầu. Nó cũng hỗ
trợ khả năng mở rộng dễ dàng bằng cách thêm các máy chủ và phân chia dữ liệu tự
đợng.



Tính năng truy vấn mạnh mẽ: MongoDB cung cấp một ngôn ngữ truy vấn linh

hoạt và mạnh mẽ, cho phép bạn thực hiện truy vấn phức tạp và tìm kiếm dữ liệu theo
nhiều tiêu chí.

23




Hiệu suất cao: MongoDB được thiết kế để có hiệu suất cao với khả năng xử lý

tải lưu lượng dữ liệu lớn và tốc đợ truy vấn nhanh.



Tích hợp tốt với các ngơn ngữ lập trình: MongoDB cung cấp các trình điều khiển

và API cho nhiều ngơn ngữ lập trình phổ biến, giúp tương tác và làm việc với cơ sở
dữ liệu dễ dàng trong mơi trường lập trình u thích của bạn.




Hỗ trợ cao cho replica set và sharding: MongoDB hỗ trợ replica set để cung cấp

tính sẵn sàng cao và khả năng chịu lỗi. Nó cũng hỗ trợ sharding để phân tán dữ liệu
trên nhiều máy chủ, giúp tăng khả năng mở rộng.
-

Nhược điểm:



Không hỗ trợ giao diện SQL: MongoDB không hỗ trợ ngôn ngữ truy vấn SQL,

điều này có thể gây khó khăn cho những người đã quen với SQL khi chuyển sang sử
dụng MongoDB.



Tốn nhiều dung lượng đĩa: Vì MongoDB lưu trữ dữ liệu theo cấu trúc tài liệu, có

thể tốn nhiều dung lượng đĩa hơn so với cơ sở dữ liệu SQL truyền thống.



Khả năng quản lý tài nguyên: Với khả năng mở rộng dễ dàng, việc quản lý và

vận hành hệ thống MongoDB có thể phức tạp hơn so với các hệ quản trị cơ sở dữ liệu
SQL truyền thống.




Cần hiểu biết về quản lý dữ liệu: Với tính linh hoạt và phi cấu trúc của MongoDB,

việc thiết kế và quản lý dữ liệu đòi hỏi hiểu biết và kỹ năng đặc biệt để tối ưu hóa
hiệu suất và khả năng mở rợng của hệ thống.
2.6. Tổng quan về Mongoose
Mongoose là một thư viện (library) Node.js được sử dụng để tương tác với cơ sở dữ
liệu MongoDB. Nó cung cấp mợt giao diện đơn giản và dễ sử dụng để thao tác với
MongoDB bằng cách định nghĩa các mơ hình dữ liệu và thực hiện các truy vấn.

24


Hình 2.6 Mongoose

-

Ưu điểm:



Đơn giản và dễ sử dụng: Mongoose cung cấp một giao diện đơn giản và dễ sử

dụng để tương tác với MongoDB. Nó giúp giảm bớt cơng việc lặp lại và cung cấp các
phương thức tiện ích để thao tác dữ liệu trong MongoDB.



Định nghĩa mơ hình dữ liệu: Mongoose cho phép bạn định nghĩa mơ hình dữ liệu

để xác định cấu trúc và quan hệ giữa các tài liệu. Điều này giúp kiểm soát dữ liệu và

đảm bảo tính nhất quán trong cơ sở dữ liệu.



Validation (Xác thực): Mongoose hỗ trợ xác thực dữ liệu bằng cách cho phép

bạn định nghĩa các quy tắc xác thực trên các trường trong mơ hình. Bạn có thể kiểm
tra tính hợp lệ của dữ liệu trước khi lưu trữ vào cơ sở dữ liệu.



Middleware: Mongoose cung cấp middleware cho phép bạn thực hiện các hành

động trước và sau khi thực hiện các phương thức trên mơ hình. Điều này cho phép
bạn thực hiện các tác vụ như xử lý trước khi lưu dữ liệu, truy cập dữ liệu và nhiều
hơn nữa.



Tương tác dữ liệu: Mongoose cung cấp các phương thức để tương tác và truy vấn

dữ liệu từ MongoDB. Bạn có thể thực hiện các hoạt đợng CRUD (Create, Read,
Update, Delete) một cách dễ dàng và tổ chức.
-

Nhược điểm:

25



×