Tải bản đầy đủ (.pptx) (18 trang)

Đồ án tìm hiểu nestjs và xây dựng ứng dụng minh họa

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 (335.7 KB, 18 trang )

Bá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
MSSV: 20520377

Trần Bảo Ân | 20520377

1


Nộ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 tố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
Trần Bảo Ân | 20520377

2



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

Trần Bảo Ân | 20520377

3


1.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)

Trần Bảo Ân | 20520377

4


1.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

Trần Bảo Ân | 20520377

5


1.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) hồ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ì.
Trần Bảo Ân | 20520377

6


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 u cầu, thiết kế giải pháp

Trần Bảo Ân | 20520377

7


2.1. Phát biểu bài toán và giải pháp
Phát biểu bài tố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”.
Trần Bảo Ân | 20520377

8


2.1. Phát biểu bài tố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

Trần Bảo Ân | 20520377

9


2.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

Trần Bảo Ân | 20520377

10



2.3. Phân tích yêu cầu, thiết kế giải pháp
Danh sách yêu cầu chức năng

Visitor

Đăng nhập, Đăng xuất

Admin

Master admin

X

X

Đăng ký

X

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

Kiểm duyệt dự án của khách hàng đã đăng ký

X

X

Tạo dự án mới

X

X

Cập nhật dự án: tình trạng, mơ tả…

X

X

Xóa dự án

X

X

X

X


Xem danh sách khách hàng tiềm năng

Trần Bảo Ân | 20520377

11


2.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 q 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
• Hệ thống đảm bảo tuân thủ luật liên quan đến giáo dục theo luật pháp hiện hành ở Việt Nam
Trần Bảo Ân | 20520377

12


Sơ đồ Usecase

của Web Admin

Trần Bảo Ân | 20520377

13


Sơ đồ Usecase của
Landing Page

Trần Bảo Ân | 20520377

14


ERD

Trần Bảo Ân | 20520377

15


3. Demo
Luồng demo
Kiến thức đã áp dụng

Trần Bảo Ân | 20520377

16



4. Kết luận và hướng phát triển
Kết quả đạt được


Áp dụng thành công kiến thức NestJS vào việc xây dựng website. Sản phẩm cung cấp đầy đủ các tính năng cơ bản của một website quảng
cáo cho doanh nghiệp.



Ghi nhận lại các kiến thức nghiên cứu được vào phần báo cáo cuối kỳ giúp các lập trình viên khác có thể tham khảo, sử dụng cho các nghiên
cứu sau này.

• Do thời gian và nguồn lực còn hạn chế nên các chức năng của website vẫn còn rất cơ bản và có thể nâng cấp.
Hướng phát triển


Về mặt doanh nghiệp, có thể hiện thực hóa thêm các chức năng:
❖ 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



Về mặt kĩ thuật:
❖ Back-end của dự án sử dụng kiến trúc Monolithic. Nếu trong tương lai, số lượng yêu cầu gửi về xử lý nhiều, dữ liệu lưu trữ và xử lý
phức tạp, kiến trúc này sẽ khơng cịn phù hợp nữa mà nên thay bằng Microservice.
❖ Mã nguồn cần được deploy


Trần Bảo Ân | 20520377

17


Cảm ơn quý thầy cô đã lắng nghe!

Trần Bảo Ân | 20520377

18



×