1. Trang chủ
  2. » Luận Văn - Báo Cáo

Tìm hiểu về reactjs và spring boot framework

65 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Tìm Hiểu Về ReactJS Và Spring Boot Framework
Tác giả Triệu Tuấn Tú
Người hướng dẫn Nguyễn Công Hoan
Trường học Đại Học Quốc Gia Thành Phố Hồ Chí Minh
Chuyên ngành Công Nghệ Thông Tin
Thể loại báo cáo đồ án
Năm xuất bản 2023
Thành phố Thành Phố Hồ Chí Minh
Định dạng
Số trang 65
Dung lượng 8,94 MB

Cấu trúc

  • I. Giới thiệu tổng quan (7)
    • 1. Thành viên nhóm (7)
    • 2. Tổng quan đề tài (7)
    • 3. Công cụ sử dụng (7)
  • II. Xây dựng ứng dụng (7)
    • 1. Tổng quan đề tài (7)
      • 1.1 Lý do chọn đề tài (8)
      • 1.2 Đối tượng hướng đến (8)
      • 1.3 Kết quả mong đợi (9)
    • 2. Phân tích thiết kế hệ thống (9)
      • 2.1 Xác định các yêu cầu (9)
    • 3. Thiết kế dữ liệu (33)
      • 3.1 Danh sách các collection dữ liệu (33)
      • 3.2 Mô tả từng collection dữ liệu (34)
    • 4. Thiết kế hệ thống (36)
      • 4.1 Kiến trúc hệ thống (36)
      • 4.2 Chi tiết các thành phần trong hệ thống (36)
    • 5. Thiết kế giao diện (37)
      • 5.1 Trang Home (37)
      • 5.2 Trang Blog (38)
      • 5.3 Giao diện xem chi tiết bài viết (39)
      • 5.4 Trang Introduction (40)
      • 5.5 Trang Support (41)
      • 5.6 Trang Destination (42)
      • 5.7 Giao diện chi tiết tour (43)
      • 5.8 Trang booking (44)
      • 5.9 Trang search (45)
      • 5.10 Thiết kế trang Admin Dashboard (46)
      • 5.11 Thiết kế trang quản lý đơn đặt tour (46)
    • 6. Cài đặt và kiểm thử (46)
    • 7. Source code (47)
  • III. Tìm hiểu về ReactJS (47)
    • 1. Giới thiệu (47)
    • 2. Các thành phần chính trong ReactJS (48)
      • 2.1 Components (48)
      • 2.2 Virtual DOM (49)
      • 2.3 JSX (49)
      • 2.4 State (50)
      • 2.5 Props (50)
      • 2.6 Lifecycle (51)
      • 2.7 React route dom (51)
      • 2.8 Server-side Rendering(SSR) (52)
      • 2.9 Client-side Rendering(CSR) (52)
  • IV. Spring boot (52)
    • 2. Một số component (53)
      • 2.1 Spring Boot starter (53)
      • 2.2 Spring Boot mybatis-plus (54)
      • 2.3 Spring Boot spring cache (55)
      • 2.4 Spring Boot rabbitmq (55)
      • 2.5 Spring Boot elasticsearch (56)
      • 2.6 Spring Boot docker (57)
      • 2.7 Spring Boot elk (58)
      • 2.8 Spring Boot Admin 2.0 (59)
      • 2.9 Spring Boot apollo (60)
      • 2.10 Spring Boot Security, OAuth2 + API, JWT + API, OAuth2 + JWT (60)
      • 2.11 Spring Boot Actuator Prometheus (61)
      • 2.12 Spring Boot Seata (62)
      • 2.13 Spring Boot JSR303 (62)
      • 2.14 Spring Boot với Eureka (63)
      • 2.15 Spring Boot với rest + ribbon (63)
      • 2.16 Spring Boot với Feign (63)
      • 2.17 Spring Boot với Hystrix Turbine and Dashboard (64)
      • 2.18 Spring Boot với Gateway (64)
  • V. Tài liệu tham khảo (65)

Nội dung

Giới thiệu tổng quan

Thành viên nhóm

MSSV Họ tên Email Số điện thoại

20522103 Triệu Tuấn Tú 20522103@gmail.co m

Bảng 1: Thành viên nhóm

Tổng quan đề tài

Đồ án này tập trung vào việc xây dựng một website sử dụng hai công nghệ chính là Spring Boot và ReactJS

- Spring Boot là một framework phát triển ứng dụng Java, cung cấp cho chúng ta các tính năng mạnh mẽ để xây dựng các ứng dụng web và dịch vụ web hiệu quả

- ReactJS là một thư viện JavaScript phát triển bởi Facebook, được sử dụng để xây dựng giao diện người dùng đáng tin cậy và tương tác trên các ứng dụng web.

Mục tiêu của đồ án này là tạo ra một website cơ bản Giúp hiểu rõ, sử dụng được các công nghệ tìm hiểu Để đạt được mục tiêu này, chúng ta sẽ sử dụng Spring Boot làm backend để xây dựng các API và xử lý logic nghiệp vụ Sử dụng ReactJS làm frontend để xây dựng giao diện người dùng tương tác và gửi các yêu cầu tới backend Chúng ta sẽ sử dụng RESTful API để truyền thông tin giữa hai phần của hệ thống Các công nghệ và công cụ khác như MongoDB , CSS, Bootstrap và Git cũng sẽ được sử dụng trong quá trình phát triển đồ án. Đồ án này hướng đến việc rèn kỹ năng lập trình và phát triển ứng dụng web, cũng như làm quen với hai công nghệ phổ biến hiện nay là Spring Boot và

ReactJS Ngoài ra, nó cũng nhằm cung cấp cho chúng ta một cái nhìn tổng quan về quy trình phát triển ứng dụng web từ việc thiết kế cơ sở dữ liệu, triển khai backend, xây dựng giao diện người dùng và triển khai website.

Công cụ sử dụng

Visual Studio Code: IDE chính để xây dựng ứng dụng

MongoDB Compass: Kiểm tra, quản lý cơ sở dữ liệu

Postman: Hỗ trợ test các API được tạo bởi Server

Xây dựng ứng dụng

Tổng quan đề tài

- Chức năng chính : Giúp cung cấp nơi cho khách hàng xem, đặt tour du lịch

- Nền tảng phát triển: ReactJS, SpringBoot, MongoDB

1.1Lý do chọn đề tài:

Trong đợt đại dịch COVID-19, xã hội đã phải trải qua giai đoạn cách ly và điều này đã tạo ra một sự bùng nổ trong ngành du lịch ngay sau khi dịch bệnh đi qua Với sự phát triển mạnh mẽ này, các doanh nghiệp trong lĩnh vực du lịch đang cần phát triển một website hỗ trợ đặt tour du lịch trực tuyến, và điều này trở nên vô cùng cần thiết để tạo ra cơ hội tiếp cận khách hàng dễ dàng và tối ưu hoá hoạt động thông qua công nghệ Một website hỗ trợ đặt tour du lịch có thể đóng góp quan trọng cho cả khách hàng và doanh nghiệp kinh doanh trong các cách sau:

- Đối với khách hàng: Website cung cấp một nền tảng cho phép khách hàng tiếp cận thông tin về các tour du lịch một cách nhanh chóng, chính xác và trực quan nhất, giảm thiểu thời gian và công sức phải đến trực tiếp các đại lý như trước đây Khách hàng có thể dễ dàng tìm hiểu về các tour du lịch, xem các lịch trình, các điểm đến, giá cả và những thông tin cần thiết khác

Họ có thể so sánh và lựa chọn tour phù hợp với mong muốn và ngân sách của mình một cách thuận tiện từ bất kỳ đâu chỉ với một số thao tác trên website.

- Đối với doanh nghiệp: Website hỗ trợ đặt tour du lịch giúp doanh nghiệp tối ưu hóa quá trình quản lý các tour hiện có Thông qua website, doanh nghiệp có thể dễ dàng cập nhật thông tin về tour, thay đổi lịch trình, giá cả và các chi tiết khác một cách linh hoạt Họ cũng có thể thu thập thông tin về sở thích và xu hướng của khách hàng dễ dàng hơn thông qua hệ thống đặt tour trực tuyến Dựa trên những dữ liệu này, doanh nghiệp có thể phân tích và đưa ra các chiến lược kinh doanh hợp lý hơn, nhằm tăng cường sự hấp dẫn của tour và đáp ứng nhu cầu của khách hàng một cách tốt nhất.

Tóm lại, việc phát triển một website hỗ trợ đặt tour du lịch trực tuyến mang lại nhiều lợi ích cho cả khách hàng và doanh nghiệp Đối với khách hàng, website cung cấp tiện ích tiếp cận thông tin nhanh chóng và tiện lợi, trong khi đối với doanh nghiệp, nó tạo ra cơ hội tối ưu hóa hoạt động kinh doanh và tăng cường sự tương tác với khách hàng.

1.2Đối tượng hướng đến: Đối tượng website nhắm tới là tất cả những người có nhu cầu đặt tour, muốn đi du lịch

- Những người trẻ muốn tự đặt tour đi du lịch

- Những người biết sử dụng internet giúp người khác đặt tour

- Những người muốn tiết kiệm thời gian không cần đi đến các trung tâm, đại lý

- Học được cách phát triển một ứng dụng web

- Triển khai, hoàn thành được sản phẩm

- Áp dụng được các kiến thức đã học vào phát triển đồ án

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

2.1Xác định các yêu cầu

Các yêu cầu ứng dụng cần có như:

 Thay đổi thông tin cá nhân

 Xem, tìm kiếm các tour, địa điểm

 Quản lý các tour: thêm xóa sửa thông tin

 Quản lý các địa điểm: thêm xóa sửa địa điểm

 Quản lý các bài viết: thêm xóa sửa bài viết

 Xác nhận các đơn đặt tour

 Xem thống kê báo cáo

Hình 1: Sơ đồ use case

Customer Người sử dụng chính của website Có thể thực hiện các chức năng để đặt tour Admin Người quản lý website Kiểm soát, chỉnh sửa các đối tượng hiện có trong website

Bảng 2: Danh sách tác nhân

Mô tả ngắn gọn: Người dùng đăng nhập vào hệ thống Điều kiện tiên quyết:

2 Chưa có người dùng đăng nhập

3 Chọn “Đăng nhập” tại trang bất kỳ

1 Người dùng chọn “Đăng nhập”

2 Hệ thống hiển thị form đăng nhập

3 Người dùng nhập username, password và bấm đăng nhập

4 Hệ thống gửi username, password cho Server kiểm tra

5 Người dùng đăng nhập thành công vào hệ thống

4 Sai tài khoản hoặc mật khẩu: Thông báo sai tài khoản hoặc mật khẩu

5 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 3: Đặc tả use cáe đăng nhập

Mô tả ngắn gọn: Người dùng đăng ký tài khoản vào hệ thống Điều kiện tiên quyết:

6 Chưa có người dùng đăng nhập

7 Chọn “Đăng ký” tại form đăng nhập

1 Người dùng chọn “Đăng ký”

2 Hệ thống hiển thị form đăng ký

3 Người dùng nhập username, password và bấm đăng ký

4 Hệ thống gửi username, password cho Server kiểm tra

6 Người dùng đăng ký thành công và đăng nhập thành công vào hệ thống

8 Đã tồn tại user có email hoặc username đang đăng ký: Thông báo trùng email hoặc username

9 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 4: Đặc tả use case đăng ký

Use case Xem bài viết

Hình 2: Chi tiết use case Xem bài viết

Use case: Xem bài viết

Mô tả ngắn gọn: Xem các bài viết do chủ trang web đăng tải Điều kiện tiên quyết:

10.Chọn tab “Blog” tại trên thanh navbar

1 Người dùng chọn tab “Blog”

2 Hệ thống gửi yêu cầu lấy bài viết cho Server

3 Server trả về dữ liệu Hệ thống hiện thị các bài viết lên trang web

11.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 5: Đặc tả use case Xem bài viết

User case Xem bài viết theo tên

Use case: Xem bài viết theo tên

Mô tả ngắn gọn: Tìm kiếm, xem các bài viết theo tên Điều kiện tiên quyết:

12.Chọn tab “Blog” tại trên thanh navbar

13.Nhập tên bài viết trên thanh “Search”

1 Người dùng nhập tên bài viết và nhấn search

2 Hệ thống gửi yêu cầu tìm bài viết theo tên cho Server

3 Server trả về dữ liệu theo yêu cầu Hệ thống hiện thị các bài viết lên trang web

14.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 6:Đặc tả use case Xem bài viết theo tên

User case Xem bài viết theo tag

Use case: Xem bài viết theo tên

Mô tả ngắn gọn: Lọc xem các bài viết theo “tag” Điều kiện tiên quyết:

15.Chọn tab “Blog” tại trên thanh navbar

16.Chọn vào “tag” của một bài viết bất kỳ

1 Người dùng chọn vào “tag” của một bài viết bất kỳ

2 Hệ thống gửi yêu cầu tìm bài viết theo “tag” cho Server

3 Server trả về dữ liệu theo yêu cầu Hệ thống hiện thị các bài viết lên trang web

17.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 7: Đặc tả use case Xem bài viết theo tag

Use case Xem địa điểm

Hình 3 : Chi tiết use case Xem địa điểm

Use case Xem danh sách địa điểm

Use case: Xem danh sách địa điểm

Mô tả ngắn gọn: Hiển thị danh sách các địa điểm trong trang web Điều kiện tiên quyết:

1 Người dùng truy cập vào trang chủ

1 Người dùng truy cập vào trang chủ

2 Hệ thống gửi yêu cầu lấy dữ liệu địa điểm cho Server

3 Server trả dữ liệu Hệ thống hiển thị ảnh, tên địa điể, vị trí lên trang web

2 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 8: Đặc tả use case Xem danh sách địa điẻm

Use case Xem chi tiết địa điểm

Use case: Xem chi tiết địa điểm

Mô tả ngắn gọn: Hiển thị chi tiết của địa điểm được chọn Điều kiện tiên quyết:

3 Người dùng chọn vào một địa điểm bất kỳ trong danh sách

1 Người dùng chọn vào một địa điểm bất kỳ trong danh sách

2 Đưa người dùng đến trang xem chi tiết địa điểm

3 Hệ thống gửi yêu cầu lấy dữ liệu địa điểm cho Server

4 Server trả dữ liệu Hệ thống hiển thị ảnh, tên địa điểm các tour có trong địa điểm, các đánh giá về địa điểm lên trang web

4 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 9: Đặc tả use case Xem chi tiết địa điểm

Hình 4: : Chi tiết use case Xem tour

Use case Xem danh sách tour sắp khởi hành

Use case: Xem danh sách tour sắp khởi hành

Mô tả ngắn gọn: Hiển thị một danh sách các tour sắp khởi hành Điều kiện tiên quyết:

5 Người dùng truy cập vào trang chủ

1 Người dùng truy cập vào trang chủ

2 Hệ thống yêu cầu lấy dữ liệu các tour

3 Server trả dữ liệu Hệ thống hiển thị danh sách tên tour, ngày giờ khởi hành, trở về, giá tour lên trang web

6 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 10 : : Đặc tả use case Xem tour sắp khởi hành

Use case Xem danh sách tour của địa điểm cụ thể

Use case: Xem danh sách tour của địa điểm cụ thể

Mô tả ngắn gọn: Hiển thị một danh sách các tour sắp khởi hành Điều kiện tiên quyết:

7 Người dùng chọn xem thông tin một địa điểm cụ thể

1 Người dùng chọn vào một địa điểm bất kỳ trong danh sách

2 Đưa người dùng đến trang xem chi tiết địa điểm

3 Hệ thống gửi yêu cầu lấy dữ liệu các tour theo địa điểm đó cho Server

4 Server trả dữ liệu Hệ thống hiển thị danh sách tên tour, ngày giờ khởi hành, trở về, giá tour theo địa điểm đó

8 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 11 : : Đặc tả use case Xem danh sách tour của địa điểm

Use case Xem chi tiết tour

Use case: Xem chi tiết của một tour cụ thể

Mô tả ngắn gọn: Hiển thị chi tiết thông tin tour mà người dùng chọn Điều kiện tiên quyết:

9 Người dùng chọn xem thông tin một tour cụ thể Có thể là tour trong danh sách tour sắp khởi hành, có thể là tour trong một địa điểm

1 Người dùng chọn vào một tour

2 Hệ thống lấy dữ liệu của tour đó Tạo popup hiển thị thông tin chi tiết của tour

Bảng 12: Đặc tả use case Xem chi tiết tour

Mô tả ngắn gọn: Cho phép người dùng đặt tour Điều kiện tiên quyết:

10.Người dùng chọn vào “Đặt tour ngay” trong khi xem chi tiết tour

1 Đưa người dùng đến trang đặt tour

2 Hệ thống gửi yêu cầu lấy dữ liệu các tour theo địa điểm đó cho Server

3 Server trả dữ liệu Hệ thống hiển thị danh sách tên tour, ngày giờ khởi hành, trở về, giá tour theo địa điểm đó

4 Hiển thị form cho người dùng xác nhận Họ tên, Email, SDT, nhập voucher nếu có

5 Người dùng chọn “Đặt tour” sau khi nhập đủ thông tin

6 Hệ thống gửi dữ liệu cho Server sử lý

7 Server trả về kết quả Hệ thống hiển thị đặt tour thành công

11 Hiển thị lỗi đặt tour không thành công

Bảng 13: Đặc tả use case Đặt tour

Use case Tra cứu tour đã đặt

Use case: Tra cứu tour đã đặt

Mô tả ngắn gọn: Người dùng tra cứu các tour đã đặt Điều kiện tiên quyết:

12 Người dùng đã đăng nhập

13.Chọn “Các tour đã đặt” tại “trang cá nhân”

1 Người dùng chọn “Các tour đã đặt”

2 Hệ thống gửi yêu cầu lấy các tour đã đặt theo userId, email, SDT cho Server

3 Server trả về dữ liệu theo yêu cầu Hệ thống hiển thị thông tin các tour đã đặt như: tên tour, ngày giờ khởi hành, kết thúc, giá tour, mã giảm giá

14.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 14: Đặc tả use case Tra cứu đơn đặt tour

Mô tả ngắn gọn: Người dùng để lại bình luận, đánh giá với các địa điểm đã đi Điều kiện tiên quyết:

15 Người dùng đã đăng nhập

16.Người dùng chọn đánh giá tại một địa điểm đã từng đi

1 Người dùng nhập nội dung đánh giá, số sao đánh giá và nhấn

2 Hệ thống gửi yêu cầu tạo review kèm dữ liệu cho Server

3 Server trả về dữ liệu theo yêu cầu Hệ thống hiển thị bình luận mới tại địa điểm đó

17.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 15: Đặc tả use case Đánh giá

Use case Xem thống kê báo cáo

Use case: Xem thống kê báo cáo

Mô tả ngắn gọn: Xem thống kê tổng quát của trang web Điều kiện tiên quyết:

18 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

19.Người dùng truy cập trang Admin dashboard

1 Người dùng truy cập trang Admin dashboard

2 Hệ thống gửi yêu cầu lấy các dữ liệu từ Server.

3 Hệ thống xử lý, hiển thị các thông số, bảng, biểu đồ thể hiện doanh thu, số đơn đặt tour thành công, số tour đang sử lý v.v

20.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 16: Đặc tả use case Xem thống kê báo cáo

Use case Quản lý bài viết

Hình 5 : Chi tiết use case Quản lý bài viết

Use case Hiển thị danh sách bài viết

Use case: Hiển thị danh sách bài viết

Mô tả ngắn gọn: Hiển thị bảng chứa danh sách tất cả các bài viết Điều kiện tiên quyết:

21 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

22.Chọn mục “Blog” tại trang bất kỳ trong Admin Dashboard

2 Hệ thống gửi yêu cầu lấy dữ liệu bài viết từ Server

3 Server trả dữ liệu theo yêu cầu Hệ thống hiển thị dữ liệu thành dạng bảng

4 Hệ thống thêm các action cho mỗi dòng dữ liệu

23.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 17: Đặc tả use case Hiển thị danh sách bài viết

Use case Thêm bài viết

Use case: Thêm bài viết

Mô tả ngắn gọn: Thêm bài viết mới vào trang web Điều kiện tiên quyết:

24 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

25.Chọn mục “Blog” tại trang bất kỳ trong Admin Dashboard

26.Chọn “Thêm” trang quản lý bài viết

2 Hệ thống hiển thị trang thêm bài viết

3 Người dùng nhập thông tin bài viết và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu thêm bài viết cho server Thông báo thêm thành công và quay về trang quản lý bài viết

27.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 18: Đặc tả use case Thêm bài viết

Use case Sửa bài viết

Use case: Sửa bài viết

Mô tả ngắn gọn: Sửa bài viết đã có tại trang web Điều kiện tiên quyết:

28 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

29.Chọn mục “Blog” tại trang bất kỳ trong Admin Dashboard

30.Chọn button/icon “Sửa” tại dòng của bài viết muốn sửa

2 Hệ thống hiển thị trang sửa bài viết với các thông tin load sẵn từ bài viết đã chọn

3 Người dùng sửathông tin bài viết và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu sửa bài viết cho server Thông báo sửa thành công và quay về trang quản lý bài viết

31.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 19: Đặc tả use case Sửa bài viết

Use case Xóa bài viết

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

Mô tả ngắn gọn: Xóa bài viết đã có tại trang web Điều kiện tiên quyết:

32 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

33.Chọn mục “Blog” tại trang bất kỳ trong Admin Dashboard

34.Chọn button/icon “Xóa” tại dòng của bài viết muốn sửa

2 Hệ thống hiển thị thông báo xác nhận có chắc chắn muốn xóa bài viết không

3 Người dùng xác nhận xóa

4 Hệ thống gửi yêu cầu xóa bài viết cho server Thông báo sửa thành công và quay về trang quản lý bài viết

35.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 20: Đặc tả use case Xóa bài viết

Use case Quản lý user

Hình 6 : Chi tiết use case Quản lý user

Use case Hiển thị danh sách user

Use case: Hiển thị danh sách user

Mô tả ngắn gọn: Hiển thị bảng chứa danh sách tất cả các user Điều kiện tiên quyết:

36 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

37.Chọn mục “User” tại trang bất kỳ trong Admin Dashboard

2 Hệ thống gửi yêu cầu lấy dữ liệu user từ Server

3 Server trả dữ liệu theo yêu cầu Hệ thống hiển thị dữ liệu thành dạng bảng

4 Hệ thống thêm các action cho mỗi dòng dữ liệu

38.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 21: Đặc tả use case Hiênr thị danh sách user

Mô tả ngắn gọn: Thêm user mới vào trang web Điều kiện tiên quyết:

39 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

40.Chọn mục “User” tại trang bất kỳ trong Admin Dashboard

41.Chọn “Thêm” trang quản lý user

2 Hệ thống hiển thị trang thêm user

3 Người dùng nhập thông tin user và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu thêm user cho server Thông báo thêm thành công và quay về trang quản lý user

42.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 22: Đặc tả use case Thêm user

Mô tả ngắn gọn: Sửa user đã có tại trang web Điều kiện tiên quyết:

43 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

44.Chọn mục “User” tại trang bất kỳ trong Admin Dashboard

45.Chọn button/icon “Sửa” tại dòng của user muốn sửa

2 Hệ thống hiển thị trang sửa user với các thông tin load sẵn từ user đã chọn

3 Người dùng sửathông tin user và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu sửa user cho server Thông báo sửa thành công và quay về trang quản lý user

46.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 23: Đặc tả use case Sửa user

Mô tả ngắn gọn: Xóa user đã có tại trang web Điều kiện tiên quyết:

47 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

48.Chọn mục “User” tại trang bất kỳ trong Admin Dashboard

49.Chọn button/icon “Xóa” tại dòng của user muốn sửa

2 Hệ thống hiển thị thông báo xác nhận có chắc chắn muốn xóa user không

3 Người dùng xác nhận xóa

4 Hệ thống gửi yêu cầu xóa user cho server Thông báo sửa thành công và quay về trang quản lý user

50 Không thể xóa user: nếu user đã từng đặt tour sẽ thông báo không thể xóa user

51.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 24: Đặc tả use case Xóa user

Use case Quản lý tour

Hình 7 : Chi tiết use case Quản lý tour

Use case Hiển thị danh sách tour

Use case: Hiển thị danh sách tour

Mô tả ngắn gọn: Hiển thị bảng chứa danh sách tất cả các tour Điều kiện tiên quyết:

52 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

53.Chọn mục “Tour” tại trang bất kỳ trong Admin Dashboard

2 Hệ thống gửi yêu cầu lấy dữ liệu tour từ Server

3 Server trả dữ liệu theo yêu cầu Hệ thống hiển thị dữ liệu thành dạng bảng

4 Hệ thống thêm các action cho mỗi dòng dữ liệu

54.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 25: Đặc tả use case Hiển thị danh sách tour

Mô tả ngắn gọn: Thêm tour mới vào trang web Điều kiện tiên quyết:

55 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

56.Chọn mục “Tour” tại trang bất kỳ trong Admin Dashboard

57.Chọn “Thêm” trang quản lý tour

2 Hệ thống hiển thị trang thêm tour

3 Người dùng nhập thông tin tour và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu thêm tour cho server Thông báo thêm thành công và quay về trang quản lý tour

58.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 26: Đặc tả use case Thêm tour

Mô tả ngắn gọn: Sửa tour đã có tại trang web Điều kiện tiên quyết:

59 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

60.Chọn mục “Tour” tại trang bất kỳ trong Admin Dashboard

61.Chọn button/icon “Sửa” tại dòng của tour muốn sửa

2 Hệ thống hiển thị trang sửa tour với các thông tin load sẵn từ tour đã chọn

3 Người dùng sửathông tin tour và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu sửa tour cho server Thông báo sửa thành công và quay về trang quản lý tour

62.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 27: Đặc tả use case Sửa tour

Mô tả ngắn gọn: Xóa tour đã có tại trang web Điều kiện tiên quyết:

63 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

64.Chọn mục “Tour” tại trang bất kỳ trong Admin Dashboard

65.Chọn button/icon “Xóa” tại dòng của tour muốn sửa

2 Hệ thống hiển thị thông báo xác nhận có chắc chắn muốn xóa tour không

3 Người dùng xác nhận xóa

4 Hệ thống gửi yêu cầu xóa tour cho server Thông báo sửa thành công và quay về trang quản lý tour

66 Không thể xóa tour: nếu tour đã từng được đặt sẽ thông báo không thể xóa tour

67.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 28: Đặc tả use case Xóa tour

Use case Quản lý địa điểm

Hình 8 : Chi tiết use case Quản lý địa điểm

Use case Hiển thị danh sách địa điểm

Use case: Hiển thị danh sách địa điểm

Mô tả ngắn gọn: Hiển thị bảng chứa danh sách tất cả các địa điểm Điều kiện tiên quyết:

68 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

69.Chọn mục “Destinations” tại trang bất kỳ trong Admin Dashboard

2 Hệ thống gửi yêu cầu lấy dữ liệu địa điểm từ Server

3 Server trả dữ liệu theo yêu cầu Hệ thống hiển thị dữ liệu thành dạng bảng

4 Hệ thống thêm các action cho mỗi dòng dữ liệu

70.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 29: Đặc tả use case Hiển hị danh sach địa điểm

Use case Thêm địa điểm

Use case: Thêm địa điểm

Mô tả ngắn gọn: Thêm địa điểm mới vào trang web Điều kiện tiên quyết:

71 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

72.Chọn mục “Destinations” tại trang bất kỳ trong Admin Dashboard

73.Chọn “Thêm” trang quản lý tour

2 Hệ thống hiển thị trang thêm địa điểm

3 Người dùng nhập thông tin địa điểm và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu thêm địa điểm cho server Thông báo thêm thành công và quay về trang quản lý địa điểm

74.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 30: Đặc tả use case Thêm địa điểm

Use case Sửa địa điểm

Use case: Sửa địa điểm

Mô tả ngắn gọn: Sửa địa điểm đã có tại trang web Điều kiện tiên quyết:

75 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

76.Chọn mục “Destinations” tại trang bất kỳ trong Admin Dashboard

77.Chọn button/icon “Sửa” tại dòng của địa điểm muốn sửa

2 Hệ thống hiển thị trang sửa địa điểm với các thông tin load sẵn từ địa điểm đã chọn

3 Người dùng sửathông tin địa điểm và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu sửa địa điểm cho server Thông báo sửa thành công và quay về trang quản lý địa điểm

78.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 31: Đặc tả use case Sửa địa điểm

Use case Xóa địa điểm

Use case: Xóa địa điểm

Mô tả ngắn gọn: Xóa địa điểm đã có tại trang web Điều kiện tiên quyết:

79 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

80.Chọn mục “Destinations” tại trang bất kỳ trong Admin Dashboard

81.Chọn button/icon “Xóa” tại dòng của địa điểm muốn sửa

2 Hệ thống hiển thị thông báo xác nhận có chắc chắn muốn xóa địa điểm không

3 Người dùng xác nhận xóa

4 Hệ thống gửi yêu cầu xóa địa điểm cho server Thông báo sửa thành công và quay về trang quản lý địa điểm

82 Không thể xóa địa điểm: nếu địa điểm đã có tour sẽ thông báo không thể xóa địa điểm

83.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 32: Đặc tả use case Xóa địa điểm

Use case Quản lý voucher

Hình 9 : Chi tiết use case Quản lý voucher

Use case Hiển thị danh sách voucher

Use case: Hiển thị danh sách voucher

Mô tả ngắn gọn: Hiển thị bảng chứa danh sách tất cả các voucher Điều kiện tiên quyết:

84 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

85.Chọn mục “Voucher” tại trang bất kỳ trong Admin Dashboard

2 Hệ thống gửi yêu cầu lấy dữ liệu voucher từ Server

3 Server trả dữ liệu theo yêu cầu Hệ thống hiển thị dữ liệu thành dạng bảng

4 Hệ thống thêm các action cho mỗi dòng dữ liệu

86.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 33: Đặc tả use case Hiển thị danh sách voucher

Mô tả ngắn gọn: Thêm voucher mới vào trang web Điều kiện tiên quyết:

87 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

88.Chọn mục “Voucher” tại trang bất kỳ trong Admin Dashboard

89.Chọn “Thêm” trang quản lý voucher

2 Hệ thống hiển thị trang thêm voucher

3 Người dùng nhập thông tin voucher và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu thêm voucher cho server Thông báo thêm thành công và quay về trang quản lý voucher

90.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 34: Đặc tả use case Thêm voucher

Mô tả ngắn gọn: Sửa voucher đã có tại trang web Điều kiện tiên quyết:

91 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

92.Chọn mục “Voucher” tại trang bất kỳ trong Admin Dashboard

93.Chọn button/icon “Sửa” tại dòng của voucher muốn sửa

2 Hệ thống hiển thị trang sửa voucher với các thông tin load sẵn từ voucher đã chọn

3 Người dùng sửathông tin voucher và nhấn “Hoàn tất”

4 Hệ thống gửi yêu cầu sửa voucher cho server Thông báo sửa thành công và quay về trang quản lý voucher

94.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 35: Đặc tả use case Sửa voucher

Mô tả ngắn gọn: Xóa voucher đã có tại trang web Điều kiện tiên quyết:

95 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

96.Chọn mục “Voucher” tại trang bất kỳ trong Admin Dashboard

97.Chọn button/icon “Xóa” tại dòng của voucher muốn sửa

2 Hệ thống hiển thị thông báo xác nhận có chắc chắn muốn xóa voucher không

3 Người dùng xác nhận xóa

4 Hệ thống gửi yêu cầu xóa voucher cho server Thông báo sửa thành công và quay về trang quản lý voucher

98 Không thể xóa voucher: nếu voucher đã từng được đặt sẽ thông báo không thể xóa voucher

99.Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 36: Đặc tả use case Xóa coucher

Use case Quản lý review

Hình 10 : Chi tiết use case Quản lý review

Use case Hiển thị danh sách review

Use case: Hiển thị danh sách review

Mô tả ngắn gọn: Hiển thị bảng chứa danh sách tất cả các review Điều kiện tiên quyết:

100 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

101 Chọn mục “Review” tại trang bất kỳ trong Admin Dashboard

2 Hệ thống gửi yêu cầu lấy dữ liệu review từ Server

3 Server trả dữ liệu theo yêu cầu Hệ thống hiển thị dữ liệu thành dạng bảng

4 Hệ thống thêm các action cho mỗi dòng dữ liệu

102 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 37: Đặc tả use case Hiển thị danh sách review

Mô tả ngắn gọn: Xóa review đã có tại trang web Điều kiện tiên quyết:

103 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

104 Chọn mục “Review” tại trang bất kỳ trong Admin Dashboard

105 Chọn button/icon “Xóa” tại dòng của review muốn sửa

2 Hệ thống hiển thị thông báo xác nhận có chắc chắn muốn xóa review không

3 Người dùng xác nhận xóa

4 Hệ thống gửi yêu cầu xóa review cho server Thông báo sửa thành công và quay về trang quản lý review

106 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 38: Đặc tả use case Xóa review

Use case Quản lý, xác nhận đơn đặt tour

Hình 11 : Chi tiết use case Quản lý xác nhận đơn đặt tour

Use case Hiển thị danh sách đơn đặt tour

Use case: Hiển thị danh sách đơn đặt tour

Mô tả ngắn gọn: Hiển thị bảng chứa danh sách tất cả các đơn đặt tour Điều kiện tiên quyết:

107 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

108 Chọn mục “Booking” tại trang bất kỳ trong Admin Dashboard

2 Hệ thống gửi yêu cầu lấy dữ liệu đơn đặt tour từ Server

3 Server trả dữ liệu theo yêu cầu Hệ thống hiển thị dữ liệu thành dạng bảng

4 Hệ thống thêm các action cho mỗi dòng dữ liệu

109 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 39: Hiển thị danh sách đơn đặt tour

Use case Sửa đơn đặt tour

Use case: Sửa đơn đặt tour

Mô tả ngắn gọn: Sửa đơn đặt tour đã có tại trang web Điều kiện tiên quyết:

110 Người dùng đã đăng nhập bằng tài khoản có quyền là Admin

111 Chọn mục “Booking” tại trang bất kỳ trong Admin Dashboard

112 Chọn button/icon “Sửa” tại dòng của đơn đặt tour muốn sửa

6 Hệ thống hiển thị trang sửa đơn đặt tour với các thông tin load sẵn từ đơn đặt tour đã chọn

7 Người dùng chỉ có thể sửa trạng thái đơn đặt tour và nhấn “Hoàn tất”

8 Hệ thống gửi yêu cầu sửa đơn đặt tour cho server Thông báo sửa thành công và quay về trang quản lý đơn đặt tour

113 Lỗi từ phía Server: Thông báo có lỗi từ phía Server

Bảng 40: Đặc tả use case Sửa đơn đặt tour

Thiết kế dữ liệu

3.1Danh sách các collection dữ liệu:

1 Blog Chứa các document là dữ liệu các bài viết

2 Booking Chứa các document là dữ liệu các đơn đặt tour

3 Destination Chứa các document là dữ liệu các địa điểm

4 Review Chứa các document là dữ liệu các đánh giá

5 Role Chứa các document là dữ liệu các quyền của user

6 Tour Chứa các document là dữ liệu các tour

7 User Chứa các document là dữ liệu các user

8 Voucher Chứa các document là dữ liệu các voucher

Bảng 41: Danh sách collection dữ liệu

3.2Mô tả từng collection dữ liệu

T Tên thuộc tính Kiểu dữ liệu Diễn giải

1 _id String Mã duy nhất của bài viết

2 Title String Tiêu đề bài viết

3 Content String Nội dung của bài viết

4 Tag String Chủ đề của bài viết

5 createAt DateTime Ngày giờ tạo bài viết

6 Image String Đường dẫn tới hình ảnh minh họa của bài viết

String Nội dung chi tiết của bài viết

Bảng 42: Mô tả collection blog

1 _id String Mã duy nhất của đơn đặt tour

2 userId String Mã của user đã đặt tour

3 tourId String Mã của tour được đặt

4 voucherId String Mã của phiếu giảm giá được áp dụng

5 Status String Trạng thái của đơn hàng

Bảng 43: Mô tả collection booking

1 _id String Mã duy nhất của địa điểm

2 name String Tên của địa điểm

3 description String Mô tả ngắn gọn địa điểm

4 Location String Thành phố, quốc gia của địa điểm

5 Main_img String Đường dẫn tới hình ảnh chính của địa điểm

6 Img String[] Chứa danh sách hình ảnh của điểm đến

Bảng 44: Mô tả collection destination

1 _id String Mã duy nhất của review

2 userId String Mã của user đã viết review

String Mã của địa điểm được đánh giá

4 Rating Int Số điểm đánh giá

5 Comment String Nội dung của đánh giá

6 createAt DateTime Ngày giờ tạo đánh giá

Bảng 45: Mô tả collection review

T Tên thuộc tính Kiểu dữ liệu Diễn giải

1 _id String Mã duy nhất của role

2 Name String Tên của role

Bảng 46: Mô tả collection review

T Tên thuộc tính Kiểu dữ liệu Diễn giải

1 _id String Mã duy nhất của tour

2 tourName String Tên của tour

3 destinationI d String Mã của địa điểm tour thuộc về

4 dateFrom DateTime Ngày giờ khởi hành tour

5 dateTo DateTime Ngày giờ kết thúc tour

6 Schedule String Lịch trình di chuyển

7 Price Double Giá gốc của tour

Bảng 47: Mô tả collection tour

1 _id String Mã duy nhất của đơn đặt tour

2 Username String Tên tài khoản của user

3 Password String Mật khẩu của user

String Số điện thoại của user

5 Email String Email của user

6 fullName String Họ tên đầy đủ của user

7 roleId String Mã của role của user đó

Bảng 48: Mô tả collection user

T Tên thuộc tính Kiểu dữ liệu Diễn giải

1 _id String Mã duy nhất của voucher

2 Number String Tổng số voucher

3 Value String Giá trị của voucher

4 Start DateTime Ngày bắt đầu áp dụng của voucher

5 End DateTime Ngày kết thúc áp dụng của voucher

Bảng 49: Mô tả collection Voucher

Thiết kế hệ thống

- Tầng Presentation: hiển thị các thành phần giao diện để tương tác với người dùng như tiếp nhận thông tin, thông báo lỗi, …

- Tầng Business Logic: thực hiện các hành động nghiệp vụ của phần mềm như tính toán, đánh giá tính hợp lệ của thông tin, … Tầng này còn di chuyển, xử lí thông tin giữa 2 tầng trên dưới

- Tầng Data: nơi lưu trữ và trích xuất dữ liệu từ các hệ quản trị CSDL hay các file trong hệ thống Cho phép tầng Business logic thực hiện các truy vấn dữ liệu

- Client: Tiếp nhận, gửi các request từ người dùng cho Server

- Server: Nhận các request, xử lý, trả về kết quả cho Client

4.2Chi tiết các thành phần trong hệ thống

- Giao diện người dung: Cung cấp một giao diện cho người dùng thực hiện các thao tác nhập/xuất dữ liệu Đồng thời, trong lúc sử dụng, thông báo cho người dùng nếu có lỗi xảy ra

- Mô hình 3 lớp Tiếp nhận yêu cầu từ giao diện người dùng, kiểm tra tính đúng đắn theo ràng buộc và thực thi yêu cầu nếu điều kiện được đáp ứng

- Cơ sở dữ liệu Lưu trữ toàn bộ dữ liệu liên quan đến thông tin trung tâm.

Thiết kế giao diện

Hình 12: Giao diện trang home

Hình 13: Giao diện trang Blog

5.3Giao diện xem chi tiết bài viết

Hình 14: Giao diện xem chi tiết bài viết

Hình 15: Giao diện trang Introduction

Hình 16: Giao diện trang Support

Hình 17: Giao diện trang Destination

5.7Giao diện chi tiết tour

Hình 18: Giao diện chi tiết tour

Hình 19: Giao diện đặt tour

Hình 20: Giao diện trang Tìm kiếm đơn đặt tour

5.10 Thiết kế trang Admin Dashboard

Hình 21: Bản thiết kế trang Admin Dashboard

5.11 Thiết kế trang quản lý đơn đặt tour

Hình 22: Bản thiết kế trang Quản lý đơn đặt tour

Cài đặt và kiểm thử

T Chức năng Độ hoàn thành Ghi chú

1 Đăng nhập 70% Hoàn thành FrontEnd,

BackEnd lỗi chưa chạy được

2 Đăng ký 70% Hoàn thành FrontEnd,

BackEnd lỗi chưa chạy được

7 Tra cứu tour đã đặt 100%

8 Đánh giá 60% Hoàn thành BackEnd Phần

FrontEnd chưa có giao điện để thực hiện gửi bình luận

9 Xem thống kê báo cáo 0%

15 Quản lý xác nhận đơn đặt tour 50%

Bảng 50: Kết quả cài đặt

Source code

Link github BE: Vippro67/Project1_BE: Backend for Project1 - DreamHoliday (github.com)Link github FE: Vippro67/Project1_FE: Frontend for Project1 - DreamHoliday (github.com)

Tìm hiểu về ReactJS

Giới thiệu

ReactJS là một thư viện JavaScript mã nguồn mở được phát triển bởi

Facebook Nó ra đời với mục đích giúp cho việc xây dựng các ứng dụng web và mobile hiện đại trở nên đơn giản hơn và tiện lợi hơn.

ReactJS được phát triển dựa trên mô hình component, cho phép các nhà phát triển tạo ra các thành phần độc lập có tính tái sử dụng cao Các component này có thể được sử dụng để xây dựng các giao diện người dùng phong phú và đa dạng, từ những trang web tĩnh đến các ứng dụng động phức tạp ReactJS cung cấp một cách tiếp cận khác biệt so với các thư viện JavaScript khác, bằng cách sử dụng Virtual DOM (Document Object Model) để tối ưu hiệu suất của ứng dụng Virtual DOM là một phiên bản tạm thời của DOM, cho phép

ReactJS so sánh sự khác biệt giữa Virtual DOM cũ và mới, và chỉ render lại các thành phần cần thiết, giảm thiểu thời gian và tài nguyên của ứng dụng

Ngoài ra, ReactJS cũng hỗ trợ quản lý state của ứng dụng một cách dễ dàng hơn, với các tính năng như props, state và lifecycle methods Props và state được sử dụng để lưu trữ các giá trị và dữ liệu của component, trong khi lifecycle methods giúp cho các component tự động render lại mỗi khi có sự thay đổi trong state của nó.

ReactJS cũng được tích hợp với các công cụ và thư viện khác để giúp người lập trình phát triển ứng dụng một cách linh hoạt và tiện lợi hơn Ví dụ, Redux là một thư viện quản lý state phổ biến trong ReactJS, giúp cho việc quản lý và đồng bộ hóa các thành phần trong ứng dụng trở nên đơn giản hơn.

Bên cạnh đó, ReactJS còn có khả năng tương thích với các nền tảng khác như React Native, cho phép người lập trình sử dụng cùng một codebase để phát triển cả ứng dụng web và mobile, tiết kiệm thời gian và chi phí cho quá trình phát triển.

Từ các ưu điểm vượt trội như tính tái sử dụng cao, hiệu suất tối ưu và khả năng tương thích với nhiều nền tảng, ReactJS đã trở thành một trong những thư viện JavaScript phổ biến nhất hiện nay Nó được sử dụng rộng rãi trong việc xây dựng các ứng dụng web và mobile, từ các startup mới đến các công ty lớn Một số ví dụ nổi tiếng về các ứng dụng được xây dựng bằng ReactJS bao gồm Facebook, Instagram, Netflix, Airbnb và Uber.

ReactJS cũng được đánh giá cao về cộng đồng phát triển và tài liệu hỗ trợ Nó có một cộng đồng đông đảo và tích cực, với hàng ngàn các thư viện và công cụ được phát triển và chia sẻ miễn phí trên các trang web như npm và

GitHub Ngoài ra, ReactJS cũng có rất nhiều tài liệu học tập và giải đáp thắc mắc trực tuyến, từ các trang web học tập như Udemy, Coursera và Pluralsight đến các diễn đàn như Stack Overflow và Reddit.

Với những ưu điểm vượt trội và sự phổ biến ngày càng tăng, ReactJS đã trở thành một trong những công nghệ quan trọng nhất trong lĩnh vực phát triển web và mobile hiện nay Việc nắm vững ReactJS sẽ giúp cho các lập trình viên có thể xây dựng các ứng dụng đa dạng, hiệu quả và tiện lợi hơn bao giờ hết.

Các thành phần chính trong ReactJS

ReactJS xây dựng ứng dụng bằng cách chia nhỏ chúng thành các thành phần độc lập và tái sử dụng được gọi là components Components là các khối xây dựng giao diện có thể nhúng vào nhau để tạo thành giao diện người dùng hoàn chỉnh Các components trong ReactJS có thể là class-based component hoặc function component.

- Class-based components: Là các thành phần được định nghĩa bằng cách tạo một lớp con của React.Component và ghi đè các phương thức của lớp cha để định nghĩa giao diện người dùng.

- Function components: Là các thành phần được định nghĩa bằng cách sử dụng hàm JavaScript và trả về JSX để xác định giao diện người dùng.

ReactJS sử dụng một cấu trúc dữ liệu gọi là Virtual DOM để biểu diễn giao diện người dùng Virtual DOM là một bản sao nhẹ của DOM thực sự trong trình duyệt, và ReactJS sử dụng nó để hiệu quả cập nhật và tái render các thành phần khi dữ liệu thay đổi Việc sử dụng Virtual DOM giúp tăng hiệu suất và tối ưu quá trình rendering trong ReactJS.

Virtual DOM sẽ so sánh những thay đổi của nó và DOM cũ Từ đó chỉ re-rendered lại các thành phần có thay đổi thay vì render lại cả trang web.

JavaScript XML một phần mở rộng cú pháp cho JavaScript, cho phép viết mã HTML trong các thành phần React JSX giúp kết hợp mã JavaScript và HTML một cách dễ dàng và tạo ra mã nguồn có cấu trúc rõ ràng hơn ReactJS biên dịch JSX thành mã JavaScript thông thườngđể thực thi.

Hình 24: Ví dụ khi sử dụng JSX

Hình 25: Ví dụ khi không sử dụng JSX

Qua ví dụ trên có thể thấy JSX giúp code trở nên trực quan hơn, dễ tiếp cận với những người đã học qua HTML hoặc mới tiếp cận và sử dụng reactJS.

ReactJS quản lý trạng thái của ứng dụng thông qua một đối tượng gọi là state State có thể là dữ liệu ban đầu cho trang web, cũng có thể thay đổi làm dữ liệu mới khi người dùng tương tác Khi state thay đổi, ReactJS sẽ tự động cập nhật giao diện người dùng tương ứng State được tạo trong component, nó lấy dữ liệu ban đầu của nó trong phương thức constructor()State có thể thay đổi, React sử dụng phương thức setState() để cập nhật đối tượng của state State chỉ có thể được thay đổi bởi component chứa trạng thái.

Hình 26: Ví dụ khai báo và thay đổi state

Props (viết tắt của "properties") là cách truyền dữ liệu từ một thành phần cha (parent component) đến một thành phần con (child component) trong ReactJS Props giúp truyền thông tin từ nơi này sang nơi khác trong cây thành phần (component tree) và giữ cho các thành phần có thể tương tác và truyền dữ liệu cho nhau.

Hình 27: Ví dụ truyền props từ component cha

Hình 28: Ví dụ về nhận props từ component cha

ReactJS cung cấp các phương thức vòng đời cho các thành phần, cho phép chúng ta can thiệp vào các giai đoạn quan trọng trong quá trình của thành phần, như khi được khởi tạo, cập nhật hoặc huỷ bỏ Việc sử dụng lifecycle methods giúp kiểm soát logic ứng dụng và tương tác với các sự kiện xảy ra trong quá trình render.

Trong life cycle có 3 quá trình chính bao gồm Mouting(khởi tạo), Updating(cập nhật) và Unmouting(hủy bỏ)

2.7React route dom Đây là một thư viện bên thứ ba phổ biến trong cộng đồng ReactJS, được sử dụng để quản lý định tuyến trong ứng dụng web React Router cho phép chúng ta tạo các route (đường dẫn) và điều hướng giữa các thành phần React một cách dễ dàng.

Hình 29: Ví dụ về react route dom

SSR là quá trình tạo và render giao diện người dùng trên máy chủ trước khi gửi đến trình duyệt Khi yêu cầu được gửi từ trình duyệt, máy chủ sẽ tạo và trả về trang HTML đã được render hoàn chỉnh cho trình duyệt.

Với SSR, ReactJS được sử dụng để xây dựng giao diện người dùng trên máy chủ, thông qua thư viện như Next.js hoặc Gatsby.js React components được render thành HTML tĩnh, kèm theo dữ liệu ban đầu từ máy chủ.

SSR giúp tối ưu hóa SEO, tăng khả năng tương tác trên trình duyệt đầu tiên và cung cấp trải nghiệm nhanh hơn cho người dùng Tuy nhiên, nó có thể tốn nhiều tài nguyên máy chủ và thời gian render ban đầu.

CSR là quá trình tạo và render giao diện người dùng trên trình duyệt Khi yêu cầu được gửi từ trình duyệt, máy chủ chỉ trả về một tệp HTML trống và tập tin JavaScript của ứng dụng React.

Với CSR, ReactJS chạy trên trình duyệt và sử dụng Virtual DOM để tạo và cập nhật giao diện người dùng dựa trên dữ liệu được truy vấn từ máy chủ hoặc các API bên ngoài.

Spring boot

Một số component

- Khái niệm: Spring Boot starter là các module giúp đơn giản hóa việc cấu hình và sử dụng các dependencies trong ứng dụng Spring Boot Starter cung cấp một tập hợp các dependencies được cấu hình sẵn cho một loại ứng dụng cụ thể và các dependencies được tự động phát hiện và tự động cấu hình khi được thêm vào.

- Tính năng và ưu điểm:

 Giúp đơn giản hóa quá trình cấu hình các dependencies.

 Tự động cấu hình các dependencies một cách chuẩn xác và hiệu quả.

 Giảm thiểu thời gian và công sức khi phải cấu hình các dependencies một cách thủ công.

- Cách sử dụng: Để sử dụng Spring Boot starter, chỉ cần thêm dependency của starter vào file pom.xml của ứng dụng Spring Boot Ví dụ, để sử dụng starter cho RESTful web service, ta thêm dependency sau vào file pom.xml Sau đó, các dependencies liên quan đến RESTful web service sẽ được tự động cấu hình và sẵn sàng để sử dụng trong ứng dụng Spring Boot.

Hình 30: Ví dụ sử dụng springboot starter

- Khái niệm: Mybatis-Plus là một framework giúp đơn giản hóa việc sử dụng

Mybatis trong ứng dụng Spring Boot Mybatis-Plus cung cấp các tính năng hỗ trợ các hoạt động CRUD và pagination một cách dễ dàng và tiện lợi.

- Tính năng và ưu điểm:

 Giúp đơn giản hóa quá trình tạo các truy vấn SQL cho việc thao tác với

 Cung cấp các tính năng hỗ trợ cho các hoạt động CRUD và pagination.

 Tự động cấu hình các truy vấn SQL cho các hoạt động CRUD.

- Cách sử dụng: Để sử dụng Mybatis-Plus, ta cần thêm dependency của Mybatis- Plus vào file pom.xml của ứng dụng Spring Boot Sau đó, ta sử dụng các interface được cung cấp bởi Mybatis-Plus để thực hiện các hoạt động CRUD và pagination trên các đối tượng trong ứng dụng.

- Ví dụ dưới đây là khởi tạo một nơi lưu trữ các đối tượng User extends từ interface của mybatis plus

Hình 31: Ví dụ sử dụng interface của mybatis plus

Sau khi sử dụng mybatis plus có thể truy vấn các kết quả cần thiết bằng cách sử dụng các hàm được cung cấp

Hình 32: Ví dụ code sử dụng mybatis plus

Kết quả của các hàm tương ứng với câu lệnh truy vấn dưới.

Hình 33: Câu lênh SQL tương ứng khi sử dung mybatis plus

- Khái niệm: Spring Cache là một framework cung cấp các tính năng hỗ trợ cho việc caching dữ liệu trong ứng dụng Spring Boot Spring Cache cung cấp một cách tiếp cận và giúp đơn giản hóa việc sử dụng caching trong ứng dụng.

- Tính năng và ưu điểm:

 Giảm thời gian phản hồi của ứng dụng và tăng hiệu suất bằng cách cache dữ liệu.

 Tăng tính khả dụng và độ tin cậy của ứng dụng bằng cách giảm tải cho

 Cung cấp các tính năng hỗ trợ cho việc quản lý và điều chỉnh cache.

 @Cacheable: Được sử dụng để đánh dấu một phương thức hoặc một phần tử dữ liệu có thể được lưu trữ trong cache Khi phương thức được gọi hoặc dữ liệu được yêu cầu, Spring Boot sẽ kiểm tra cache trước để xem liệu giá trị tương ứng đã tồn tại hay không Nếu có, giá trị sẽ được lấy từ cache thay vì thực hiện lại phương thức hoặc truy vấn dữ liệu.

 @CacheEvict: Xóa giá trị tương ứng trong cache để đảm bảo dữ liệu mới nhất được truy xuất trong lần tiếp theo.

 @CachePut: Thay thế giá trị hiện có (nếu có) hoặc thêm mới vào cache.

- Cách sử dụng: Để sử dụng Spring Cache, ta cần sử dụng các annotation được cung cấp bởi Spring Cache, chẳng hạn như @Cacheable, @CachePut,

@CacheEvict, để áp dụng caching cho các phương thức trong ứng dụng Ta cũng có thể tùy chỉnh các cấu hình cho caching trong file application.properties của ứng dụng.

- Khái niệm: RabbitMQ là một message broker được sử dụng để xử lý và truyền tải các message giữa các ứng dụng Có thể giúp cho các hệ thống phần mềm khác nhau giao tiếp, trao đổi dữ liệu với nhau Spring Boot RabbitMQ cung cấp các tính năng hỗ trợ cho việc sử dụng RabbitMQ trong ứng dụng Spring Boot.

- Tính năng và ưu điểm:

 Giúp đơn giản hóa việc sử dụng RabbitMQ trong ứng dụng Spring Boot.

 Cung cấp các tính năng hỗ trợ cho việc quản lý và điều chỉnh message queues.

 Một số các tính năng khác như: Exchanges, Bindings, Publish/Subscribe, v.v

- Cách sử dụng: Để sử dụng Spring Boot RabbitMQ, ta cần thêm dependency của RabbitMQ và Spring Boot RabbitMQ vào file pom.xml của ứng dụng

Spring Boot Sau đó, ta sử dụng các annotation và các API được cung cấp bởi Spring Boot RabbitMQ để thực hiện các hoạt động như publish message, subscribe message và xử lý message trong ứng dụng.

- Khái niệm: Elasticsearch là một công cụ tìm kiếm và phân tích dữ liệu mã nguồn mở Nó cực kì mạnh mẽ trong việc phục vụ tìm kiếm dữ liệu nhưng lại yếu trong các thao tác CRUD cơ bản nên thường được sử dụng song song với các thao tác của Database chính Spring Boot Elasticsearch cung cấp các tính năng hỗ trợ cho việc sử dụng Elasticsearch trong ứng dụng Spring Boot.

- Tính năng và ưu điểm:

 Giúp đơn giản hóa việc tìm kiếm và phân tích dữ liệu trong ứng dụng.

 Cung cấp các tính năng hỗ trợ cho việc tạo và quản lý các index và document trong Elasticsearch

- Cách sử dụng: Để sử dụng Spring Boot Elasticsearch, ta cần thêm dependency của Elasticsearch và Spring Boot Elasticsearch vào file pom.xml của ứng dụng Spring Boot

- Sau đó, ta sử dụng các API được cung cấp bởi Spring Boot Elasticsearch để thực hiện các hoạt động như tạo index, thêm document, tìm kiếm và xóa document trong Elasticsearch.

- Khái niệm: Docker là một nền tảng containerization mã nguồn mở giúp đơn giản hóa việc triển khai ứng dụng.Nó cung cấp một môi trường nhẹ và tách biệt để chạy các ứng dụng và các thành phần liên quan của chúng Spring Boot

Docker cung cấp các tính năng hỗ trợ cho việc sử dụng Docker trong ứng dụng Spring Boot.

- Tính năng và ưu điểm:

 Giúp đơn giản hóa việc triển khai ứng dụng trong môi trường container.

 Cung cấp các tính năng hỗ trợ cho việc quản lý và điều chỉnh container.

 Images: nơi để lưu trữ các containers, chúng được tạo từ các hướng dẫn viết trong dockerfile

 Dockerfile: Dockerfile là một tệp văn bản chứa một loạt hướng dẫn để xây dựng hình ảnh Docker.Dockerfiles cho phép bạn xác định trạng thái mong muốn của images và tự động hóa quá trình xây dựng Images.

- Cách sử dụng: Để sử dụng Spring Boot Docker, ta cần tạo một Dockerfile cho ứng dụng Spring Boot để build image Sau đó, ta có thể sử dụng các tính năng của Docker để triển khai và quản lý các container chạy ứng dụng Spring Boot.

- Khái niệm: ELK là một giải pháp mã nguồn mở được sử dụng để xử lý và phân tích log.ELK là từ viết tắt của Elaticsearch, Logstash và Kibana, đây là ba công cụ nguồn mở thường được sử dụng cùng nhau để phân tích và giám sát nhật ký Spring Boot ELK cung cấp các tính năng hỗ trợ cho việc sử dụng ELK trong ứng dụng Spring Boot.

- Tính năng và ưu điểm:

 Giúp đơn giản hóa việc xử lý và phân tích log trong ứng dụng.

 Cung cấp các tính năng hỗ trợ cho việc quản lý và điều chỉnh ELK stack.

 Logstash: một kênh xử lý dữ liệu thu thập, xử lý và chuyển đổi logs cũng như các nguồn dữ liệu khác trước khi gửi chúng đến Elaticsearch để lưu trữ

 Elaticsearch: được sử dụng để lưu trữ và lập chỉ mục(index) các bản ghi được tạo bởi ứng dụng Spring Boot cung cấp từ logstash

Ngày đăng: 04/09/2023, 20:41

HÌNH ẢNH LIÊN QUAN

Hình 1: Sơ đồ use case - Tìm hiểu về reactjs và spring boot framework
i ̀nh 1: Sơ đồ use case (Trang 10)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w