Với quỹ thời gian có hạn cũng như kinh nghiệm xây dựng sản phẩm còn thiếu, sản phẩm đồ án cuối cùng có thể sẽ mắc phải một số sai sót và chúng em rất mong sẽ nhận được những góp ý của cô
Trang 1ĐẠ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
ĐỒ ÁN 1
TÌM HIỂU VỀ NODEJS VÀ XÂY DỰNG ỨNG WEBSITE
CHIA SẺ NHÀ Ở
Giảng viên hướng dẫn: TH.S NGUYỄN CÔNG HOAN Sinh viên thực hiện: Đặng Thái Tài-20520923
Tp Hồ Chí Minh, Tháng 7 năm 2021
Trang 2LỜI CẢM ƠN
Đầu tiên, nhóm thực hiện đề tài “Xây dựng website nghe mua điện thoại online” xin gửi lời cảm ơn đến quý thầy cô đã đang giảng dạy chúng em ở ngôi trường Đại học Công nghệ thông tin – Đại học quốc gia thành phố Hồ Chí Minh những kiến thức nền tảng vững chắc để nhóm có thể tự tìm hiểu và hoàn thiện đề tài này một cách tốt nhất
Đặc biệt, chúng em xin gửi lời cảm ơn tới cô Nguyễn Công Hoan vì sự tận tình hướng dẫn cũng như những góp ý, đề xuất quý báu của cô dành cho nhóm trong quá trình thực hiện đồ
án
Trong suốt thời gian qua, nhóm đã tự tìm hiểu các công nghệ mới và kết hợp với những kiến thức nền tảng trong quá trình học tập, nghiên cứu và vận dụng để thực hiện đề tài này Với quỹ thời gian có hạn cũng như kinh nghiệm xây dựng sản phẩm còn thiếu, sản phẩm đồ án cuối cùng có thể sẽ mắc phải một số sai sót và chúng em rất mong sẽ nhận được những góp ý của cô
để bổ sung, cải tiến sản phẩm cũng như nâng cao kiến thức để xây dựng các sản phẩm tiếp theo
sẽ chỉn chu và hoàn thiện hơn, và tích luỹ thêm cho mình những kinh nghiệm quý giá để đáp ứng tốt cho những công việc thực tế trong tương lai
Một lần nữa, xin cảm ơn cô vì đã đồng hành cùng chúng em trong suốt học kỳ I của năm
học này
Sinh viên thực hiện Đặng Thái Tài NHẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN
Trang 3
., ngày tháng……năm 2021 Người nhận xét (Ký tên và ghi rõ họ tên) Mục lục L I C M N ỜI CẢM ƠN ẢM ƠN ƠN 2
NH N XÉT C A GI NG VIÊN H ẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN ỦA GIẢNG VIÊN HƯỚNG DẪN ẢM ƠN ƯỚNG DẪN NG D N ẪN 2
DANH M C VI T T T ỤC VIẾT TẮT ẾT TẮT ẮT 7
Đ C Ề CƯƠNG CHI TIẾT ƯƠN NG CHI TI T ẾT TẮT 7
Ch ương 1: GIỚI THIỆU ĐỀ TÀI ng 1: GI I THI U Đ TÀI ỚNG DẪN ỆU ĐỀ TÀI Ề CƯƠNG CHI TIẾT 11
1.1Tên đ tài: ề tài: 11
1.2 Mô t đ tài: ả đề tài: ề tài: 11
1.3 Lý do ch n đ tài: ọn đề tài: ề tài: 12
1.4 Kh o sát hi n tr ng: ả đề tài: ện trạng: ạng: 12
1.5 Công ngh s d ng: ện trạng: ử dụng: ụng: 13
1.5 Môi tr ường thiết kế: ng thi t k : ết kế: ết kế: 13
1.6 Công c h tr : ụng: ỗ trợ: ợ: 13
Ch ương 1: GIỚI THIỆU ĐỀ TÀI ng 2: C S LÝ THUY T ƠN Ở LÝ THUYẾT ẾT TẮT 13
2.1 T ng quan v HandleBarJs: ổng quan về HandleBarJs: ề tài: 13
2.1.1 Gi i thi u v HandleBarJs: ới thiệu về HandleBarJs: ện trạng: ề tài: 13
2.1.2 Khái ni m c b n trong HandleBarJs: ện trạng: ơ bản trong HandleBarJs: ả đề tài: 13
2.1.2.1 Bi u th c c a Handbars.js: ểu thức của Handbars.js: ức của Handbars.js: ủa Handbars.js: 13
2.1.2.2 Bi u th c c a Handbars.js: ểu thức của Handbars.js: ức của Handbars.js: ủa Handbars.js: 14
2.1.2.2 Hàm biên d ch Handbars.js: ịch Handbars.js: 14
2.1.3 u đi m c a Handlebarjs: Ưu điểm của Handlebarjs: ểu thức của Handbars.js: ủa Handbars.js: 14
2.2.1 NodeJS là gì? 15
Trang 42.2.2 Cách NodeJS ho t đ ng: ạng: ộng: 15
2.2.3 u đi m c a NodeJS: Ưu điểm của Handlebarjs: ểu thức của Handbars.js: ủa Handbars.js: 15
2.3.1 ExpressJS là gì? 16
2.3.2 Tính năng c a ExpressJS: ủa Handbars.js: 16
2.4 MongoDB: 17
2.4.1 MongoDB là gì: 17
2.4.2 M t s câu l nh c b n: ộng: ố câu lệnh cơ bản: ện trạng: ơ bản trong HandleBarJs: ả đề tài: 17
2.4.3 u đi m c a MongoDB: Ưu điểm của Handlebarjs: ểu thức của Handbars.js: ủa Handbars.js: 17
Ch ương 1: GIỚI THIỆU ĐỀ TÀI ng 3: 18
PHÂN TÍCH THI T K H TH NG ẾT TẮT ẾT TẮT ỆU ĐỀ TÀI ỐNG 18
3.1 S đ Use-case: ơ bản trong HandleBarJs: ồ Use-case: 18
3.1.1 Đăng nh p: ập: 19
3.1.2 Đăng xu t: ất: 20
3.1.3 Đăng ký thành viên: 21
3.1.5 Thay đ i thông tin các nhân: ổng quan về HandleBarJs: 24
3.1.6 Qu n lý thông tin cá nhân: ả đề tài: 25
3.1.7 Tìm ki m: ết kế: 27
3.1.8 Xem thông s n ph m: ả đề tài: ẩm: 28
Ch ương 1: GIỚI THIỆU ĐỀ TÀI ng 4: 29
THI T K GIAO DI N ẾT TẮT ẾT TẮT ỆU ĐỀ TÀI 29
4.1 Trang đăng nh p, đăng ký: ập: 29
1 4.1.1 Mô t : ả đề tài: 29
4.2 Trang ch : ủa Handbars.js: 30
4.2.1 Giao di n: ện trạng: 30
4.2.2 Mô t : ả đề tài: 31
4.3 Trang thông tin nhà ở: 32
4.3.1 Giao di n: ện trạng: 32
4.3.2 Mô t : ả đề tài: 32
4.4 Trang tìm ki m: ết kế: 32
4.4.1 Giao di n: ện trạng: 32
4.4.2 Mô t : ả đề tài: 32
4.5 Trang thông tin gi hàng: ỏ hàng: 33
4.5.1 Giao di n: ện trạng: 33
4.5.2 Mô t : ả đề tài: 33
4.6 Trang thông tin v n chuy n: ập: ểu thức của Handbars.js: 35
4.6.1 Giao di n: ện trạng: 35
4.6.2 Mô t : ả đề tài: 35
Ch ương 1: GIỚI THIỆU ĐỀ TÀI ng 5: 35
K T LU N ẾT TẮT ẬN XÉT CỦA GIẢNG VIÊN HƯỚNG DẪN 35
Trang 55.1 Nh n xét: ập: 35
5.1.1 Thu n l i: ập: ợ: 35
5.1.2 Khó khăn: 36
5.1.3 u đi m c a đ án: Ưu điểm của Handlebarjs: ểu thức của Handbars.js: ủa Handbars.js: ồ Use-case: 36
5.1.4 Nh ượ: c đi m c a đ án: ểu thức của Handbars.js: ủa Handbars.js: ồ Use-case: 36
5.2 H ưới thiệu về HandleBarJs: ng phát tri n c a đ án: ểu thức của Handbars.js: ủa Handbars.js: ồ Use-case: 36
TÀI LI U THAM KH O ỆU ĐỀ TÀI ẢM ƠN 36
Trang 6Mục Lục ảnh
Hình 1 Express js cung c p c ch đ nh tuy n giúp duy trì tr ng thái c a website ấp cơ chế định tuyến giúp duy trì trạng thái của website ơ chế định tuyến giúp duy trì trạng thái của website ế định tuyến giúp duy trì trạng thái của website ịnh tuyến giúp duy trì trạng thái của website ế định tuyến giúp duy trì trạng thái của website ạng thái của website ủa website 17 Hình 2:S đ use-case t ng quát ơ chế định tuyến giúp duy trì trạng thái của website ồ use-case tổng quát ổng quát 19 Hình 3: S đ use-case đăng nh p ơ chế định tuyến giúp duy trì trạng thái của website ồ use-case tổng quát ập 19 Hình 4:S đ use-case đăng xu t ơ chế định tuyến giúp duy trì trạng thái của website ồ use-case tổng quát ấp cơ chế định tuyến giúp duy trì trạng thái của website 20 Hình 5: S đ use-case đăng ký thành viên ơ chế định tuyến giúp duy trì trạng thái của website ồ use-case tổng quát 21 Hình 6: S đ use-case mua s n ph m ơ chế định tuyến giúp duy trì trạng thái của website ồ use-case tổng quát ản phẩm ẩm 23 Hình 7: S đ use-case thay đ i thông tin cá nhân ơ chế định tuyến giúp duy trì trạng thái của website ồ use-case tổng quát ổng quát 25 Hình 8: S đ use-case qu n lý gi hàng cá nhân ơ chế định tuyến giúp duy trì trạng thái của website ồ use-case tổng quát ản phẩm ỏ hàng cá nhân 26 Hình 9: S đ use-case tìm ki m ơ chế định tuyến giúp duy trì trạng thái của website ồ use-case tổng quát ế định tuyến giúp duy trì trạng thái của website 28 Hình 10: S đ use-case xem thông tin s n ph m ơ chế định tuyến giúp duy trì trạng thái của website ồ use-case tổng quát ản phẩm ẩm 29 Hình 11:Giao di n đăng nh p ện đăng nhập ập 30 Hình 12 : Giao di n nút trang đăng ký sau khi click Sign up ện đăng nhập 31 Hình 13:Giao di n trang ch ện đăng nhập ủa website 31 Hình 14:Giao di n thông tin ng ện đăng nhập ười dùng i dùng 32 Hình 15:Giao di n thông tin phòng ện đăng nhập 33 Hình 16: Giao di n trang tìm ki m ện đăng nhập ế định tuyến giúp duy trì trạng thái của website 33 Hình 17:Giao di n sau khi tìm ki m ện đăng nhập ế định tuyến giúp duy trì trạng thái của website 34 Hình 18:Giao di n thông tin chuy n đi ện đăng nhập ế định tuyến giúp duy trì trạng thái của website 34 Hình 19: Giao di n đ t phòng thành công ện đăng nhập ặt phòng thành công 35 Hình 20:Giao di n đ t phòng ện đăng nhập ặt phòng thành công 36
1
Trang 7DANH MỤC VIẾT TẮT
ĐỀ CƯƠNG CHI TIẾT TÊN ĐỀ TÀI:
Nền tảng chia sẻ nhà với Nodejs
Tên đề tài tiếng Anh:
Building a Home Sharing Platform with Node.js
Cán bộ hướng dẫn: ThS Nguyễn Công Hoan
Thời gian thực hiện: Từ ngày 05/03/2023 đến tháng 26/06/2023
Sinh viên thực hiện:
Đặng Thái Tài
Nội dung đề tài:
1 Giới thiệu:
Trang 8Javascript là một ngôn ngữ lập trình được sử dụng rộng rãi hiện nay, dễ đọc và được hỗ trợ ở mọi nơi Mà Expressjs lại hỗ trợ Javascript, do đó nếu bạn đã biết đến Javascript thì chắc chắn việc lập trình bằng Express.js là vô cùng đơn giản Ngay cả những người mới bắt đầu tham gia vào lĩnh vực phát triển web này cũng có thể sử dụng Expressjs
Javascript là ngôn ngữ lập trình dễ học với cả những người không có bất kỳ kiến thức gì về ngôn ngữ lập trình khác Chính vì tính phổ biến, dễ học và dễ sử dụng này màExpress.js cho phép các tài năng trẻ tham gia và đạt được nhiều thành công trong phát triển ứng dụng web
Thông qua đề tài này, nhóm sẽ xây dựng website bán hàng trực tuyến
Website cung cấp tảng trực tuyến kết nối người đang có nhu cầu thuê chỗ ở (khách) với những người chủ nhà có sẵn nhà, căn hộ hoặc phòng trống (đơn vị chủ sở hữu) Website cập nhật tất cả những điện thoại mới ra mắt phù hợp trong từng nhu cầu sử dụng, mẫu mã mới nhất nhằm đáp ứng nhu cầu của người mua
Hệ thống này sẽ có chức năng cơ bản như hiển thị và order, upload mặt
hàng mới, gợi ý nhu cầu người dùng, chức năng tìm kiếm theo dạng text, …
Về phía quản trị viên sẽ có những chức năng chính như: quản lý mặt hàng,
số lượng, thông tin đơn hàng, quản lý tài khoản người dùng, …
2 Mục tiêu:
-Kết nối người thuê và người cho thuê: Tạo ra một nền tảng kết nối giữa
người muốn thuê nhà và những người sẵn sàng cho thuê nhà của mình
-Cung cấp trải nghiệm người dùng tốt: Tạo ra một trang web dễ sử dụng và
hiệu quả, giúp người dùng dễ dàng tìm kiếm và đặt thuê các căn nhà theo
nhu cầu của họ
-Quản lý thông tin liên quan đến nhà cho thuê: Cung cấp một giao diện
quản lý cho người cho thuê để quản lý các thông tin về nhà, đặt giá thuê
và tương tác với người thuê
-Tạo niềm tin và đảm bảo an toàn: Đảm bảo tính bảo mật và an toàn trong
giao dịch cho cả người thuê và người cho thuê
-Tích hợp các tính năng phụ trợ: Bao gồm các tính năng như thanh toán
trực tuyến, đánh giá và nhận xét, bản đồ hiển thị vị trí, và các dịch vụ
khác như hỗ trợ khách hàng và hướng dẫn dành cho người sử dụng
3 Phạm vi:
Trang 9o Đặt và quản lý đơn hàng: Người dùng có thể đặt các yêu cầu thuê nhà, xem
và quản lý lịch sử đặt hàng và thanh toán
o Đăng tin nhà cho thuê: Người cho thuê có thể đăng tin về căn nhà của mình bao gồm mô tả, hình ảnh, giá cả và các tiện nghi đi kèm
o Đánh giá và nhận xét: Người thuê có thể đánh giá và viết nhận xét về những lần thuê nhà trước đó
o Thanh toán trực tuyến: Tích hợp các cổng thanh toán trực tuyến để người dùng có thể thanh toán tiền thuê nhờ một hệ thống an toàn và tin cậy
o Gửi yêu cầu hỗ trợ: Người dùng có thể gửi yêu cầu hỗ trợ hoặc liên hệ với nhóm quản lý để giải quyết các vấn đề liên quan đến thuê nhà
o Quản lý thông tin cá nhân: Người dùng có thể quản lý thông tin cá nhân, thayđổi mật khẩu và cài đặt các tùy chọn cá nhân
4 Đối tượng:
- Người dùng khách
- Người dùng có tài khoản
- Quản trị viên (Admin)
Trang 10Kế hoạch thực hiện:
Thời gian Nội dung
05/03/2023 – 16/04/2024 Tìm hiểu đề tài, đánh giá thị trường, xác định các chức năng
của hệ thống
17/04/2023 – 30/04/2023 Tìm hiểu, nghiên cứu công nghệ
01/05/2023 – 17/05/2023 Phân tích và thiết kế hệ thống website
18/05/2023 – 08/06/2023 Tìm hiểu quy trình thiết kế UX/UI và thiết kế giao diện cho
website
09/06/2023 – 05/07/2023 Cài đặt phần back-end, xử lý của hệ thống
06/07/2023 – 08/07/2023 Kiểm thử hệ thống và hoàn thiện báo cáo
Trang 11Sự phổ biến của việc chia sẻ nhà ở có nhiều lợi ích, bao gồm tiết kiệm chi phí, tăng cơ hộikết nối xã hội và giảm tác động môi trường Chia sẻ nhà ở có thể giúp người thuê nhà tiết kiệmmột phần thu nhập cho các khoản thuê nhà, điện, nước và internet Ngoài ra, chia sẻ nhà ở cũngtạo cơ hội để gặp gỡ và kết nối với các người thuê nhà khác, làm tăng mối quan hệ xã hội và mởrộng mạng lưới của mỗi người.Với sự phát triển nhanh chóng của internet, chia sẻ nhà ở trênmạng xã hội đã trở thành một xu hướng phổ biến trong thời gian gần đây Nền tảng chia sẻ nhàcung cấp một cách tiện lợi để những người có nhà trống có thể kiếm thêm thu nhập bằng cách chothuê không gian của mình ngắn hạn cho những du khách hoặc người dùng khác.
Việc đăng ký và tìm kiếm thông qua mạng xã hội rất đơn giản và tiết kiệm thời gian.Người sử dụng cũng có thể xem thông tin chi tiết về những ngôi nhà và phòng trống được chia sẻ,bao gồm cả hình ảnh và đánh giá từ người đã sử dụng trước đó Điều này giúp người thuê nhà cócái nhìn tổng quan về không gian trước khi đặt chỗ
Website mua điện thọau trực tuyến với mục tiêu mang lại trải nghiệm tốt cho ngườidùng, chúng em xây dựng website cung cấp đầy đủ các chức năng cơ bản hiện có của mộtwebsite chia sẻ nhà ở Người dùng tiếp cận các mẫu mã thời trang đa dạng theo sở thích riêng củamình, …
Website Home-Sharing được xây dựng bằng Nodejs kết hợp với các thư viện hỗ trợ khác
1.3 Lý do chọn đề tài:
Với sự phát triển của Internet, nhu mua sắm trên không gian mạng tăng vượt trội bởi vì
sự đơn giản, dễ sử dụng, sự tiếp cận nhanh chóng đến kho đến nguồn sản phẩm khổng lồ của các website mua bán trực tuyến
Trước đây, chúng ta luôn bị gò bó khi mua sắm bởi vì thời gian hạn chế Một cửa hàng,hay một trung tâm thương mại như địa điểm đơn lẻ, có không gian trưng bày hạng chế, … chỉcho phép chúng ta chưng bày được vài mười mấy, hay vài chục bộ Thậm chí góc khuất còn bị bỏqua Muốn bổ sung các các sản phẩm mới đều phải mới đều phải đi tìm các nguồn khác từ cácnguồn khác, điều này gây mất nhiều thời gian, và chỉ những ai có nhiều thời gian rảnh rỗi hay có
vị chí đi lại thuận lợi Mỗi lần thay đổi địa điểm mua hàng cũng như mỗi lần tới một chân trờimới, vô cùng bất tiện Chi phí cho những chuyến đi cũng như thời
gian là vô cùng bất tiện
Tốc độ phát triển “chóng mặt” của Internet đã mang lại nhiều thay đổi lớn cho con người,trong đó bao gồm cả việc thay đổi cách thức và thói mua sắm trước đây của chúng ta vì đã xuấthiện các website mua bán trực tuyến
Chúng em quyết định chọn đề tài “Xây dựng website mua điện thoại trực tuyến” bởi vìtính ứng dụng cao, nhu cầu thực tế lớn và muốn vận dụng khả năng của mình ở nhiều loại đề tài
Trang 12khác nhau để xây dựng các sản phẩm cho chúng và cái tên đề tài cũng khá thú vị vì chúng emchưa từng nghĩ tới sẽ thực hiện đề tài này
1.4 Khảo sát hiện trạng:
Hiện nay, thị trường đã có rất nhiều website mua sắm trực tuyến nổi tiếng được mọingười biết đến như thegioididong, SellPhoneS, hay những website cửa hàng lớn, … Với giaodiện bắt mắt, dễ sử dụng, cùng với số lượng sản phầm khổng lồ, chúng nhanh chóng trở thànhnhững website mua bán trực tuyến hàng đầu Các chức năng của những website này đều tập trungvào trải nghiệm tìm kiếm một chiếc điện thoại thoải mái ưng ý nhất cho người dùng
Chúng em cũng sẽ xây dựng một website mua điện thoại trực tuyến với những tính năng mua sắm cơ bản nhằm mang lại trải nghiệm dễ sử dụng và tiện dụng cho người dùng
1.5 Môi trường thiết kế:
- Visual Studio Code
1.6 Công cụ hỗ trợ:
- Trình duyệt Cốc Cốc, Chrome, FireFox
2.1 Tổng quan về HandleBarJs:
2.1.1 Giới thiệu về HandleBarJs:
Handlebars.js là một thư viện mô phỏng hệ thống mẫu (template system) tiên tiến Nócho phép bạn tạo ra các mẫu HTML động bằng cách tách biệt hoàn toàn logic và giao diện ngườidùng Handlebars.js cho phép bạn kết hợp dữ liệu từ nguồn khác nhau và sử dụng các thành phầnlogic như biểu thức, điều kiện, vòng lặp và các hàm trợ giúp để tạo ra đầu ra HTML cuối cùng
2.1.2 Khái niệm cơ bản trong HandleBarJs:
2.1.2.1 Biểu thức của Handbars.js:
Một biểu thức handlebars đơn giản được viết như thế này (trong đó, nội dụng của
Trang 13content có thể là một biến hoặc một hàm trợ giúp với các thông số hoặc không có tham số)
Dưới đây là ví dụ về một thẻ script Handlebars:
<div> Name: {{ headerTitle }} </div>
2.1.2.2 Biểu thức của Handbars.js:
- Phần chính thứ 2 trong Handlebars templating là dữ liệu bạn muốn hiển thị trên trang.Bạnchuyển một dữ liệu đối tượng tới hàm handlebars, đối tượng dữ liệu được gọi là bối cảnh
Và đối tượng này có thể bao gồm tất cả các mảng, chuỗi, số, các đối tượng khác hoặc kếthợp tất cả đối tượng này Nếu đối tượng dữ liệu có một mảng các đối tượng, bạn có thể sửdụng hàm Handlebars mỗi vòng lặp để lặp lại mảng và bối cảnh hiện tại được đặt cho từngmục trong mảng Dưới đây là các ví dụ về việc thiết lập đối tượng dữ liệu và cách lặp nótrong handlebars:
Đối tượng dữ liệu với mảng đối tượng:
//đối tượng customers có một mảng các đối tượng mà chúng ta sẽ chuyển tới handlebars:var theData = {customers:[{firstName:”Michael”, lastName:”Alexander”, age:20},{firstName:”John”, lastName:”Allen”, age:29}]};
Bạn có thể sử dụng vòng lặp để lặp lại đối tượng của customers như thế này:
Trang 14-Biên dịch template với hàm handlebars.
Sau đó, sử dụng hàm được biên dịch đó để gọi đối tượng dữ liệu được truyền cho nó (nó lấymột đối tượng dữ liệu làm tham số duy nhất của nó) Và điều này sẽ trả về một chuỗiHTML với các giá trị đối tượng được chèn vào HTML
2.1.3 Ưu điểm của Handlebarjs:
- Handlebars là một trong những công cụ tiên tiến nhất, giàu tính năng và phổ biến trong tất cả Javascript templating engines.- Tái sử dụng các Component
- Handlebars là templating engine không có logic, có nghĩa là có rất ít hoặc không có logic trong các template HTML mà bạn sử dụng
- Nó giữ cho các trang HTML của bạn đơn giản, sạch sẽ và sẽ tách biệt khỏi các tệp javascript dựa
trên logic và handlebars phục vụ tốt mục đích này2.2 NodeJS:
2.2.1 NodeJS là gì?
Nodejs là một nền tảng (Platform) phát triển độc lập được xây dựng trên V8 JavaScriptEngine – trình thông dịch thực thi mã JavaScript giúp chúng ta có thể xây dựng được các ứngdụng web như các trang video clip, các forum và đặc biệt là trang mạng xã hội phạm vi hẹp mộtcách nhanh chóng và dễ dàng mở rộng
NodeJS có thể chạy trên nhiều nền tảng hệ điều hành khác nhau từ Window cho tới Linux,
OS X nên đó cũng là một lợi thế NodeJS cung cấp các thư viện phong phú ở dạng JavascriptModule khác nhau giúp đơn giản hóa việc lập trình và giảm thời gian ở mức thấp nhất
Node.js được xây dựng và phát triển từ năm 2009, bảo trợ bởi công ty Joyent, trụ sở tại
California, Hoa Kỳ
2.2.2 Cách NodeJS hoạt động:
Ý tưởng chính của Node js là sử dụng non-blocking, hướng sự vào ra dữ liệu thôngqua các tác vụ thời gian thực một cách nhanh chóng Bởi vì, Node js có khả năng mở rộngnhanh chóng, khả năng xử lý một số lượng lớn các kết nối đồng thời bằng thông lượng cao Nếu như các ứng dụng web truyền thống, các request tạo ra một luồng xử lý yêu cầumới và chiếm RAM của hệ thống thì việc tài nguyên của hệ thống sẽ được sử dụng khônghiệu quả Chính vì lẽ đó giải pháp mà Node js đưa ra là sử dụng luồng đơn (Single-Threaded), kết hợp với non-blocking I/O để thực thi các request, cho phép hỗ trợ hàng chụcngàn kết nối đồng thời
2.2.3 Ưu điểm của NodeJS:
- Tốc độ cực nhanh: Được xây dựng dựa trên engine JavaScript V8 của Google Chrome, do
đó các thư viện của nó có khả năng thực thi code chỉ rất nhanh - NPM: Với hơn 50,000
package khác nhau, các developer có thể dễ dàng lựa chọn bất kỳ tính năng nào để xây dựng
Trang 15cho ứng dụng của mình
- Lập trình không đồng bộ: Mọi API của Node.JS đều có tính không đồng bộ (non blocking),
do đó một server dựa trên Node.JS không cần phải đợi API trả về dữ liệu - Không có
buffering: Node.JS giúp tiết kiệm thời gian xử lý file khi cần upload âm
thanh hoặc video vì các ứng dụng này không bao giờ buffer dữ liệu mà chỉ xuất dữ liệu theo từng phần (chunk)
- Đơn luồng: Node.JS sử dụng mô hình đơn luồng với vòng lặp sự kiện Do đó các ứng dụng
có thể xử lý số lượng request lớn hơn rất nhiều so với các server truyền thống như ApacheHTTP Server
- Khả năng mở rộng cao: Server NodeJS phản hồi theo hướng non-blocking, do đó nó có thể
mở rộng vô cùng dễ dàng, tạo ra các luồng giới hạn để xử lý request 2.3 ExpressJS:
2.3.1 ExpressJS là gì?
Express.js là một framework mã nguồn mở miễn phí cho Node.js Express.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 Express
hỗ rợ các phương thức HTTP và midleware tạo ra môt API vô cùng mạnh mẽ và dễ sử dụng
2.3.2 Tính năng của ExpressJS:
- Phát triển máy chủ nhanh chóng: Expressjs cung cấp nhiều tính năng dưới dạng các hàm để
dễ dàng sử dụng ở bất kỳ đâu trong chương trình Điều này đã loại bỏ nhu cầu viết mã từ
đó tiết kiệm được thời gian
- Phần mềm trung gian Middleware: Đây là phần mềm trung gian có quyền truy cập vào cơ
sở dữ liệu, yêu cầu của khách hàng và những phần mềm trung gian khác Phần mềmMiddleware này chịu trách nhiệm chính cho việc tổ chức có hệ thống các chức năng củaExpress.js
- Định tuyến - Routing: Express js cung cấp cơ chế định tuyến giúp duy trì trạng thái của website với sự trợ giúp của URL
- Tạo mẫu - Templating: Các công cụ tạo khuôn mẫu được Express.js cung cấp cho phép cácnhà xây dựng nội dung động trên các website bằng cách tạo dựng các mẫu HTML ở phíamáy chủ
- Gỡ lỗi - Debugging: Để phát triển thành công các ứng dụng web không thể thiết đi việc gỡlỗi Giờ đây với Expressjs việc gỡ lỗi đã trở nên dễ dàng hơn nhờ khả năng xác định chínhxác các phần ứng dụng web có lỗi
Trang 16Hình 1 Express js cung cấp cơ chế định tuyến giúp duy trì trạng thái của website.
2.4 MongoDB:
2.4.1 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
2.4.2 Một số câu lệnh cơ bản:
Tạo csdl use test;
Tạo bảng db.createCollection('students');
Tạo bản ghi db.students.insert({ name:huy, gender: 'male'});
Cập nhật db.students.update({ _id: 1 },{$set:{ name: huy update' }});
Xóa bản ghi db.students.remove({ _id: 1});
Tìm kiếm all db.students.find({});
Trang 17Tìm kiếm db.students.find({ name: huy });
2.4.3 Ư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ạnmuố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 RDBMSnê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ãncá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ệmcluster 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
- 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