Tổng quan về NestJS⮚ NodeJS là một Javascript runtime, ra đời năm 2009, được xây dựng trên “V8 Javascript Engine” ⮚ NestJS là một framework phát triển ứng dụng web back-end, được xây dựn
Trang 1Báo cáo Đồ án 1
TÌM HIỂU NESTJS VÀ XÂY DỰNG ỨNG DỤNG MINH HỌA
Giảng viên hướng dẫn: Th.S Nguyễn Tấn Toàn
Sinh viên thực hiện: Trần Bảo Ân
Trang 2Nội dung báo cáo
1 Lý thuyết về NestJS
1.1 Tổng quan về NestJS
1.2 Các khái niệm quan trọng trong NestJS
1.3 So sánh NestJS với các framework khác
2 Xây dựng ứng dụng minh họa: Website môi giới bất động sản Katana
2.1 Phát biểu bài toán, hướng giải quyết
2.2 Công nghệ sử dụng
2.3 Phân tích yêu cầu, thiết kế giải pháp
3 Demo
4 Kết luận và hướng phát triển
Trang 31 Lý thuyết về NestJS
1.1 Tổng quan về NestJS
1.2 Các khái niệm quan trọng trong NestJS
1.3 So sánh NestJS với các framework khác
Trang 41.1 Tổng quan về NestJS
⮚ NodeJS là một Javascript runtime, ra đời năm 2009, được xây dựng trên “V8 Javascript Engine”
⮚ NestJS là một framework phát triển ứng dụng web back-end, được xây dựng trên nền tảng Node.js, giải quyết bài toán của NodeJS là “Kiến trúc”
⮚ Nền tảng cấu thành NestJS:
• Node.js
• TypeScript
• Express.js
• WebSockets
• Microservices
• Dependency Injection (DI)
Trang 51.2 Các khái niệm quan trọng trong NestJS
1 Controllers
2 Providers và Services
3 Middleware
4 Data Persistence
5 WebSockets
6 Microservices
7 CLI
Trang 61.3 So sánh NestJS với các framework khác
Express.js:
• Express.js là một trong những framework phát triển ứng dụng web back-end phổ biến và đơn giản nhất trong cộng đồng Node.js
• NestJS được xây dựng dựa trên Express.js và cung cấp một cấu trúc module, Dependency Injection, decorators và nhiều tính năng khác để tạo mã nguồn có tổ chức và dễ bảo trì hơn
• NestJS hỗ trợ tích hợp tốt hơn với TypeScript và cung cấp các tính năng mạnh mẽ như GraphQL, WebSockets và Microservices
Koa:
• Koa là một framework nhẹ và mạnh mẽ, tương tự như Express.js, nhưng có mô hình xử lý middleware hiện đại hơn
• NestJS cung cấp cấu trúc module, Dependency Injection và các tính năng nâng cao khác, trong khi Koa tập trung vào việc cung cấp một mô hình middleware đơn giản và linh hoạt
• Điều này làm cho NestJS thích hợp hơn cho các ứng dụng lớn và phức tạp hơn, trong khi Koa phù hợp cho các ứng dụng nhỏ và tùy chỉnh
AdonisJS:
• AdonisJS là một framework Node.js full-stack được lấy cảm hứng từ Laravel (một framework phát triển ứng dụng web PHP)
• AdonisJS cung cấp một mô hình MVC (Model-View-Controller) hoàn chỉnh, trong khi NestJS tập trung vào việc cung cấp một cấu trúc module, Dependency Injection và các tính năng phát triển ứng dụng web back-end mạnh mẽ
• NestJS hỗ trợ tích hợp tốt hơn với TypeScript và có thể được sử dụng để phát triển các ứng dụng Node.js back-end hiệu quả và dễ bảo trì
Trang 72 Xây dựng ứng dụng minh họa:
Website môi giới bất động sản Katana
2.1 Phát biểu bài toán, hướng giải quyết
2.2 Công nghệ sử dụng
2.3 Phân tích yêu cầu, thiết kế giải pháp
Trang 82.1 Phát biểu bài toán và giải pháp
Phát biểu bài toán
• Phía người mua: Các thành phố lớn của Việt Nam hiện nay có mật độ dân số khá cao Nhu cầu tìm mua bất động sản cũng theo đó mà tăng nhanh Thế nhưng, người có nhu cầu mua gặp nhiều khó khăn trong việc tìm thông tin về bất động sản, bao gồm: giá, địa điểm, diện tích, văn hóa, môi trường xung quanh… Việc tìm kiếm truyền thống mất nhiều thời gian, công sức, tiền của và mang lại hiệu quả thấp
• Phía người bán: Họ là người có tài sản muốn bán nhưng chưa tìm được thị trường
phù hợp Việc thiếu kiến thức chuyên môn và thiếu các mối quan hệ xã hội khiến
người bán thường mắc phải vấn đề về đầu ra cho tài sản Họ thường phát tờ rơi, dán biển quảng cáo Tuy nhiên các phương pháp này chưa thật sự hiệu quả bởi mức độ truyền thông không cao.
• Nhận thấy cần có một ứng dụng đóng vai trò cầu nối để giảm khoảng cách giữa người mua và người bán, em đã thực hiện xây dựng “Website môi giới bất động sản Katana”.
Trang 92.1 Phát biểu bài toán và giải pháp
Giải pháp
• Website bao gồm:
• 1 trang web đăng tải thông tin và tương tác với người dùng gọi là Landing Page
• 1 trang để quản trị viên thực hiện các chức năng quản lý gọi là Web Admin
Trang 102.2 Công nghệ sử dụng
• Front-end: ReactJS
• Back-end: NestJS
• Cơ sở dữ liệu: PostgresQL
• Docker
• Quản lý mã nguồn: Git-Github
Trang 112.3 Phân tích yêu cầu, thiết kế giải pháp
Xem chi tiết một dự án bất động sản X X X
Tìm kiếm bất động sản theo tiêu chí X
Lọc kết quả tìm kiếm theo giá và theo địa điểm X
Xem tin tức và quảng cáo X
Để lại thông tin liên hệ X
Xem thống kê doanh thu X X
Xuất file thống kê dưới dạng xlsx hoặc csv X X
Thay đổi trạng thái tài khoản nhân viên X
Xóa tài khoản nhân viên khỏi hệ thống X
Trang 122.3 Phân tích yêu cầu, thiết kế giải pháp
Yêu cầu giao diện (GUI): dễ sử dụng, hiện đại, trình bày bắt mắt thu hút người xem, tương tác cao…
Vận hành:
∙ Chạy được trên nhiều trình duyệt phổ biến như Chrome, Edge, Firefox
∙ Chạy được trên máy tính xách tay, máy tính bàn, thiết bị di động Hiệu suất:
∙ Hệ thống hoạt động liên tục 24/7
∙ Mọi tương tác giữa người dùng và hệ thống không vượt quá 1 giây
∙ Có khả năng chịu tải 30 TPS
∙ Có phân quyền người dùng
∙ Các phòng ban/khoa khác nhau chỉ xem được thông tin của phòng ban đó
∙ Giảng viên chỉ xem được thông tin của mình và thông tin của lớp do mình chịu trách nhiệm
∙ Hủy quyền của tài khoản khi cán bộ/giảng viên dừng công tác Văn hóa, chính trị:
• Hệ thống phải tuân thủ luật về quyền riêng tư của người dùng
Trang 13Sơ đồ Usecase của Web Admin
Trang 14Sơ đồ Usecase của
Landing Page
Trang 15ERD
Trang 163 Demo
Luồng demo
Kiến thức đã áp dụng
Trang 174 Kết luận và hướng phát triển
Kết quả đạt được
cáo cho doanh nghiệp
cứu sau này.
Hướng phát triển
❖ Chức năng chat để quản trị viên và người dùng có thể tương tác trực tiếp và nhanh hơn
❖ Kiểm duyệt bài viết tự động: Kết hợp trí tuệ nhân tạo để tự động kiểm duyệt các bài viết trước khi đăng tải Cụ thể ta có thể kiểm duyệt
về nội dung, từ ngữ và văn phong phù hợp với thuần phong mỹ tục
❖ Thêm chức năng thẩm định tài sản thay cho phương pháp thẩm định thủ công
Trang 18Cảm ơn quý thầy cô đã lắng nghe!