- Nội dung đề tài:Mô tả chi tiết mục tiêu, phạm vi, đối tượng, phương pháp thực hiện, kết quả mong đợi của đề tài Mục tiêu Thứ nhất là nghiên cứu về các công nghệ lập trình Java, MySQL
Trang 1ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
ONLINE Research on Recommendation Algorithms and Build an Online
Fashion Shopping Application
KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM
TP HỒ CHÍ MINH, 2021
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH
Trang 2TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
ONLINE Research on Recommendation Algorithms and Build an Online
Fashion Shopping Application
KỸ SƯ NGÀNH CÔNG NGHỆ PHẦN MỀM
GIẢNG VIÊN HƯỚNG DẪN THS TRẦN ANH DŨNG
TP HỒ CHÍ MINH, 2021
DANH SÁCH HỘI ĐỒNG BẢO VỆ KHÓA LUẬN
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số ………
Trang 3ngày ……… của Hiệu trưởng Trường Đại học Công nghệ Thông tin
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT
NAM Độc Lập - Tự Do - Hạnh Phúc
TP HCM, ngày tháng năm 2021
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ HƯỚNG DẪN) Tên khóa luận:
Tìm hiểu thuật toán Recommendation và xây dựng ứng dụng mua sắm thời trang online
Nhóm sinh viên thực hiện: Cán bộ hướng dẫn: NGUYỄN PHI KHANG 17520616
ThS TRẦN ANH DŨNG NGUYỄN QUANG KHANG 17520617
Đánh giá Khóa luận:
1 Về cuốn báo cáo:
Số trang Số chương
Số bảng số liệu Số hình vẽ
Số tài liệu tham khảo Sản phẩm
Một số nhận xét về hình thức cuốn báo cáo:
•
2 Về nội dung nghiên cứu:
•
•
Trang 4Điểm từng sinh viên:
NGUYỄN PHI KHANG: ……… /10
NGUYỄN QUANG KHANG: ……… /10
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT
NAM Độc Lập – Tự Do – Hạnh Phúc
TP HCM, ngày tháng năm 2021
NHẬN XÉT KHÓA LUẬN TỐT NGHIỆP
(CỦA CÁN BỘ PHẢN BIỆN) Tên khóa luận:
Xây dựng ứng dụng Thương mại điện tử hỗ trợ gợi ý sản phẩm Nhóm
sinh viên thực hiện: Cán bộ phản biện: NGUYỄN PHI KHANG
17520616
Trang 5NGUYỄN QUANG KHANG 17520617
Đánh giá Khóa luận:
1 Về cuốn báo cáo:
Số trang Số chương Số bảng số liệu Số hình vẽ Số tài liệu tham
khảo Sản phẩm Một số nhận xét về hình thức cuốn báo cáo:
2 Về nội dung nghiên cứu:
3 Về chương trình ứng dụng:
4 Về thái độ làm việc của sinh viên:
Đánh giá chung:
Điểm từng sinh viên:
NGUYỄN PHI KHANG: ……… /10
NGUYỄN QUANG KHANG: ……… /10
cơ bản, các kỹ năng thực tế để có thể hoàn thành Khóa luận tốt nghiệp của mình
Để hoàn thành khóa luận này, chúng em 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 về cơ sở vật chất với hệ thống thư viện hiện đại, đa dạng các loại sách, tàiliệu thuận lợi cho việc tìm kiếm, nghiên cứu thông tin
Chúng em xin gửi lời cảm ơn chân thành đến thầy Trần Anh Dũng đã tận tình giúp
đỡ, định hướng cách tư duy và cách làm việc khoa học Đó là những góp ý hết sứcquý báu không chỉ trong quá trình thực hiện luận văn này mà còn là hành trang tiếpbước cho chúng em trong quá trình học tập và lập nghiệp sau này
Trang 6Và cuối cùng, chúng em xin gửi lời cảm ơn đến gia đình, tất cả thầy cô trong khoa,bạn bè, tập thể lớp KTPM2017 là những người luôn sẵn sàng sẻ chia và giúp đỡtrong học tập và cuộc sống Mong rằng, chúng ta sẽ mãi mãi gắn bó với nhau
Trong quá trình làm khóa luận này chúng em không tránh khỏi được những sai sót,chúng em kính mong nhận được sự chỉ dẫn và góp ý của quý thầy cô để khóa luậnđược hoàn thiện hơn
Chúng em xin chân thành cảm ơn Xin chúc những điều tốt đẹp nhất sẽ luôn đồng hành cùng mọi người
CÔNG NGHỆ THÔNG TIN
CỘNG HÒA XÃ HỘI CHỦ NGHĨA VIỆT
NAM Độc Lập – Tự Do – Hạnh Phúc
TP HCM, ngày tháng năm 2021
ĐỀ CƯƠNG CHI TIẾT
TÊN ĐỀ TÀI: Tìm hiểu thuật toán Recommendation và xây dựng ứng dụng mua sắm thời
trang online
Cán bộ hướng dẫn: ThS Trần Anh Dũng
Thời gian thực hiện:Từ ngày 01/03/21 đến ngày 21/06/21
Sinh viên thực hiện:
1 Nguyễn Phi Khang - 17520616
2 Nguyễn Quang Khang - 17520617
Trang 7- Nội dung đề tài:(Mô tả chi tiết mục tiêu, phạm vi, đối tượng, phương pháp thực hiện,
kết quả mong đợi của đề tài)
Mục tiêu
Thứ nhất là nghiên cứu về các công nghệ lập trình Java, MySQL, lập trình ứngdụng với Flutter, các nghiệp vụ của một ứng dụng bán hàng online, hiểu đượcMachine Learning cơ bản và các thuật toán gợi ý sản phẩm cụ thể là Content-based
và Collaborative Filtering Có thể áp dụng trong ứng dụng minh hoạ của đề tài tìmhiểu này
Thứ hai là sử dụng các thuật toán gợi ý sản phẩm để có khả năng ứng dụng vào thực tiễn, gợi ý cho người dùng các sản phẩm tốt nhất trong số các sản phẩm phù hợp
Xem thông tin sản phẩm Bình luận và đánh giá Đặt hàng mua sản phẩm Gợi ý các sản phẩm: sản phẩm ưa thích, sản phẩm bán chạy, sản phẩm người dùng quan tâm
Ứng dụng đối với người bán hàng:
Quản lý các danh mục sản phẩm Quản lý sản phẩm
Quản lý đơn hàng
Trang 8Quản lý khuyến mãi Thống kê
Phương pháp thực hiện:
Tìm hiểu các thuật toán gợi ý sản phẩm hiện có.- Tìm hiểu nghiệp vụ, quy trình hoạt động của shop mua sắm thời trang
Phác họa hệ thống tổng quát (thiết kế dữ liệu, xử lý dữ liệu,…)
Tham khảo các ứng dụng tương tự: Zalora, SHEIN, Clothes Shop, ZAFUL,…
Tham khảo ý kiến của giảng viên hướng dẫn để được định hướng đúng, đạt kết quả tốt nhất
Thiết kế giao diện, thực thi các chức năng, quản lý code theo mô hình bloc với
Flutter Crawl, tạo bộ dữ liệu mẫu cho ứng dụng
Vận dụng, tùy chỉnh, đánh giá các thuật toán phù hợp với đề tài
Kết quả mong đợi
- Đối với hệ thống gợi ý sản phẩm
Hiểu được bài toán khuyến nghị
Hiểu được 2 phương pháp khuyến nghị chính: Content-based và Collaborative Filtering
Hệ thống gợi ý sản phẩm có thể gợi ý sản phẩm hiệu quả cho: người dùng mới (chưa có dữ liệu) và người dùng cũ (dựa trên collaborative filtering)
Gợi ý sản phẩm của người dùng có thể thích dựa trên hành vi của người dùng
Với khách hàng là các cửa hàng đã đăng nhập có thể quản lí sản phẩm, xem, xoá,sửa các sản phẩm của cửa hàng, chat với người dùng, xét duyệt các yêu cầuđược gửi từ người mua,…
Admin là người quản trị tất cả các chức năng, thực hiện thay đổi và giải quyết khi các khách hàng gặp vấn đề
Trang 9Hiểu được các kiến thức liên quan đến Flutter
Biết cách sử dụng các công cụ hỗ trợ lập trình đa nền tảng với
Flutter Biết được các kỹ thuật lập trình với Flutter
Biết cách sử dụng các công nghệ hỗ trợ để xây dựng ứng dụng minh họa
Hoàn thành ứng dụng với giao diện trực quan, hoạt động tốt trên cả hai nền tảng Android và iOS
Kế hoạch thực hiện: (Mô tả kế hoạch làm việc và phân chia công việc các thành viên tham
gia)
Với thời gian thực hiện từ 01/03/2021 tới 30/06/2021, nhóm chia thành 8 sprint với 3 giai đoạn
cụ thể:
STT Công việc Thời gian thực hiện Phân công
Giai đoạn 1: Tìm hiểu về các kiến thức cơ
bản liên quan hệ thống gợi ý và xây dựng
ứng dụng mua sắm thời trang online.
4 Tuần (01/03/2021 – 28/03/2021)
1 Sprint 1: Tìm hiểu các nghiệp vụ
shop mua sắm thời trang và thiết
kế database
1 Tuần
Trang 101.1 - Khảo sát, tìm hiểu các nghiệp vụ của
các ứng dụng mua sắm thời trang hiện
nay
- Vẽ sơ đồ logic, lập bảng
Tuần 1 (01/03/2021 – 07/03/2021)
Cả hai
2 Sprint 2: Tìm hiểu các hệ thống gợi ý 1 Tuần
2.1 - Hệ thống gợi ý là gì?
- Hệ thống gợi ý áp dụng cho việc
gì? - Các thuật toán được áp dụng?
Tuần 2 (08/03/2021 - 14/03/2021)
Cả hai
3 Sprint 3: Tìm hiểu về Backend và
Frontend
2 Tuần
3.1 - Tìm hiểu về Java, MySQL
- Thiết kế cơ sở dữ liệu
- Tạo API từ Backend
Tuần 3 - Tuần 4 (15/03/2021 – 28/03/2021)
Giai đoạn 2: Thiết kế và xây dựng ứng dụng
e-commerce
6 Tuần (29/03/2021 – 09/05/2021)
4 Sprint 4: Thiết kế UI 1 Tuần
4.1 - Khảo sát người dùng, xem review
Trang 115.1 - Xây dựng Frontend của ứng dụng
theo figma đã tạo
Tuần 6 – Tuần 8 (05/04/2021- 25/04/2021)
Quang Khang
5.2 - Xây dựng database từ các sơ đồ đã
tạo trước đó với Mysql
Tuần 6 (05/04/2021- 11/04/2021)
Phi Khang
5.3 - Tạo các api cần thiết cho ứng dụng Tuần 7- Tuần 10
(12/04/2021 – 09/05/2021)
Quang Khang
Giai đoạn 3: Tìm hiểu sâu về hệ thống gợi ý
và áp dụng vào ứng dụng
6 Tuần (10/05/2021 – 06/06/2021)
6 Sprint 6: Nghiên cứu thực hiện hệ
Cả hai
6.2 - Xây dựng code thử nghiệm và đánh
Trang 12(24/05/2021 – 06/06/2021)
7.2 - Áp dụng gợi ý sản phẩm cho người
dùng mới và collaborative filtering
cho người dùng cũ
Phi Khang
8 Sprint 8: Hoàn thiện sản phẩm 2 Tuần
Tuần 15– Tuần 16 (07/06/2021 – 30/06/2021)
Xác nhận của CBHD
(Ký tên và ghi rõ họ tên)
Trần Anh Dũng
TP HCM, ngày….tháng
… năm… Sinh viên
(Ký tên và ghi rõ họ tên)
MỤC LỤC
TÓM TẮT KHÓA LUẬN
GIỚI THIỆU CHUNG 1
1.1 Lý do chọn đề tài 1 1.2 Điểm mới và khác biệt về chức năng của đề tài so với một số ứng dụng thời trang hiện nay 2 1.2.1 Điểm khác biệt của đề tài 2
Trang 131.2.2 Điểm mới nổi bật của đề tài 3
1.2.3 Tính khác biệt, cải thiện về chức năng so với các app hiện nay 4
1.3 Phạm vi nghiên cứu 4
1.4 Đối tượng nguyên cứu 5
1.5 Phương pháp nguyên cứu 5
KIẾN THỨC NỀN TẢNG 7
2.1 Flutter 7
2.1.1 Giới thiệu về Flutter 7 2.1.2 Tại sao sử dụng Flutter? 8 2.2 Java Spring Boot 8 2.2.1 Giới thiệu về Java Spring Boot 8 2.2.2 Tại sao sử dụng Java Spring Boot 9 2.3 Hệ quản trị cơ sở dữ liệu MySQL 9 2.3.1 Giới thiệu MySQL 10 2.3.2 Tại sao sử dụng MySQL 10 2.4 Google Firebase Cloud 10 2.4.1 Giới thiệu Firebase 11 2.4.2 Chức năng chính của Google Firebase 11 2.4.3
Lợi ích của Google Firebase 12 2.5 ReactJS 13 2.5.1 Giới thiệu ReactJS 13 2.5.2 Vấn đề
và giải pháp 13 2.5.3 Tại sao sử dụng ReactJS? 13 2.6 State Management
BLoC 16 2.6.1 Mô hình BLoC 16 2.6.2 Vì sao nên chọn BLoC trong flutter? 16 2.7 Giới thiệu về chuỗi JSON 17 2.7.1 Khái niệm chuỗi JSON 17 2.7.2 Cấu trúc chuỗi
Trang 14JSON 17 2.8 Hệ thống khuyến
nghị 18 2.8.1 Giới thiệu 18 2.8.2 Các phương pháp trong hệ thống khuyến nghị 20 2.8.2.1 Hệ thống khuyến nghị theo nội dung (Content-based approach) 20 2.8.2.2 Hệ thống khuyến nghị lọc cộng tác (Collaborative filtering) 20 3.1.1.1 Hệ thống khuyến nghị lai (Hybrid
recommender system) 21 XÂY DỰNG HỆ THỐNG 25 3.1 Xây dựng kiến trúc hệ thống 25 3.1.1 Kiến trúc hệ thống ứng
dụng 25 3.1.2 Xác định yêu cầu hệ thống 25 3.1.2.1 Quy trình bán hàng 25 3.1.2.2 Quy trình xử lý hàng
hoá 26
3.2 Phân tích yêu cầu hệ thống 27
3.2.1 Phần ứng dụng mobile (Flutter) 27
3.2.2 Phần Website Admin (quản trị viên) 29
3.3 Phân tích thiết kế hệ thống 32
3.3.1 Sơ đồ use case 32
3.3.1.1 Sơ đồ use case 32
3.3.1.2 Danh sách actor 33 3.3.1.3 Danh sách usecase 34 3.3.2 Đặc tả usecase 36 3.3.2.1 Kiểm duyệt sản phẩm 36 3.3.2.2 Kiểm duyệt bài viết 37 3.3.2.3 Quản lý người dùng 39 3.3.2.4 Quản lý danh mục 40 3.3.2.5 Quản lý event/ festival 42 3.3.2.6 Quản lý khuyến mãi, quảng cáo 44 3.3.2.7 Quản lý tình trạng đơn
Trang 15hàng 46 3.3.2.8 Đăng nhập, Đăng ký 47 3.3.2.9 Tìm kiếm sản phẩm 49 3.3.2.10 Xem chi tiết sản
phẩm và tương tác với sản phẩm 50 3.3.2.11 Đặt hàng 52 3.3.2.12 Quản lý địa chỉ 54 3.3.2.13 Quản lý sản
phẩm yêu thích 55 3.3.2.14 Chat 56 3.3.2.15 Đánh
giá sản phẩm 57
3.3.2.16 Đánh giá, bình luận bài viết 58
3.3.2.17 Quản lý cửa hàng 59
3.3.2.18 Kiểm duyệt đơn hàng 61
3.3.2.19 Tham gia event/festival 62
3.3.2.20 Quản lý kho hàng 63
3.3.3 Sơ đồ phân rã chức năng 65
3.3.4 Sơ đồ sequence 66
3.3.4.1 Đăng nhập 66
3.3.4.2 Đăng ký 67
3.3.4.3 Xem chi tiết, tương tác với sản phẩm 68
3.3.4.4 Đặt hàng 69
3.3.4.5 Tìm kiếm sản phẩm 70
3.3.4.6 Quản lý địa chỉ giao hàng 70
3.3.4.7 Quản lý sản phẩm yêu thích 71
3.3.4.8 Xem sản phẩm tương tự 71
3.3.4.9 Đơn hàng của tôi 72
3.3.4.10 Xem, đánh giá, bình luận bài viết 73
3.3.5 Sơ đồ lớp 74
3.3.6 Phân tích và thiết kế CSDL 76
Trang 163.3.6.1 Bảng Orders 78
3.3.6.2 Bảng Ratings 79
3.3.6.3 Bảng Carts 80
3.3.6.4 Bảng Shipping 80
3.3.6.5 Bảng Addresses 81
3.3.6.6 Bảng Option_Product_Int 81
3.3.6.7 Bảng Option_Product_Decimal 82
3.3.6.8 Bảng Option_Product_Varchar 82
3.3.6.9 Bảng Districts 82
3.3.6.10 Bảng History_Search 83
3.3.6.11 Bảng Data_Images 83
3.3.6.12 Bảng Users 84
3.3.6.13 Bảng Transactions 84
3.3.6.14 Bảng Rating_Image 85
3.3.6.15 Bảng Products 85
3.3.6.16 Bảng Categories 86
3.3.6.17 Bảng Cart_Item 87
3.3.6.18 Bảng Status_Order 87
3.3.6.19 Bảng Brands 88
3.3.6.20 Bảng Provinces 88
3.3.6.21 Bảng Favorites 88
3.3.6.22 Bảng Attributes 89
3.3.6.23 Bảng Payment 89
3.3.6.24 Bảng Accounts 89
3.3.6.25 Bảng Rating_Star 90
3.3.6.26 Bảng Wards 90
3.3.6.27 Bảng Seen_Products 91 3.3.6.28 Bảng Order_Item 91 3.4
Trang 17Thiết kế giao diện 92
3.4.1 Giao diện ứng dụng di động Faiikan 92 3.4.2 Giao diện Website Admin 113
ÁP DỤNG GỢI Ý SẢN PHẨM 115 4.1 Thực nghiệm 115 4.1.1 Một số định nghĩa 115 4.1.1.1 Utility matrix 115 4.1.1.2 Cosine Similarity 116 4.1.1.3 TF-IDF 118 4.1.1.4 WeightedRating(WR) 120 4.1.1.5 Root Mean Squared Error (RMSE) 120 4.1.2 Phương pháp 121 4.1.2.1 Content-based Recommender System 122 4.1.2.2 Neighborhood-based Collaborative Filtering 123 4.1.3 Đánh giá 129 4.1.3.1 So sánh kết quả 129 4.1.3.2 Ưu điểm và Nhược điểm 130 4.2 Áp dụng các thuật toán Recommedation vào ứng dụng 131 4.2.1 Gợi ý cho bạn 131 4.2.2 Có thể bạn thích 132 4.2.3 Sản phẩm tương tự 134 KẾT LUẬN, HƯỚNG PHÁT TRIỂN 135 5.1 Kết quả đạt được 135 5.1.1 Lý thuyết 135 5.1.2 Công nghệ 135
5.1.3 Ứng dụng 135
5.1.3.1 Khách hàng 135
5.1.3.2 Quản lý 136
Trang 185.2 Hạn chế 136 5.3 Hướng phát triển 137 TÀI
LIỆU THAM KHẢO 138
DANH MỤC HÌNH VẼ Hình 2-1 Sự phát triển và độ phổ biến của MySQL
9 Hình 2-2 Google Firebase Cloud
10 Hình 2-3 “Thành phần hoá” giao diện với các Component 14 Hình 2-4 Virutal DOM và DOM 15 Hình 2-5 Search Engine 15 Hình 2-6 Mô hình BloC 16 Hình 2-7 Ví dụ về chuỗi JSON 18 Hình 3-1 Sơ đồ kiến trúc hệ thống 25 Hình 3-2 Các bước xây dựng quy trình bán hàng 26 Hình 3-3 Quy trình xử lý hàng hoá của FAIIKAN 26
Hình 3-4 Sơ đồ use case tổng quát
32 Hình 3-5 Use case kiểm diệt sản phẩm 36 Hình 3-6 Use case Kiểm duyệt bài viết 37 Hình 3-7 Use case Quản lý người dùng 39 Hình 3-8 Use case quản lý danh mục 40 Hình 3-9 Use case quản lý event/ festival 42 Hình 3-10 Use case quản lý khuyến mãi, quảng cáo 44 Hình 3-11 Use case quản lý tình trạng đơn hàng 46 Hình 3-12 Use case Đăng nhập, Đăng ký 47 Hình 3-13 Use case tìm kiếm sản phẩm 49 Hình 3-14 Use case xem chi tiết sản phẩm 50
Hình 3-15 Use case đặt hàng 52
Hình 3-16 Use case quản lý địa chỉ 54
Hình 3-17 Use case quản lý sản phẩm yêu thích
55 Hình 3-18 Use case chat
56 Hình 3-19 Use case đánh giá sản phẩm 57 Hình 3-20 Use case đánh giá,
Trang 19bình luận bài viết 58 Hình 3-21 Use case quản lýcửa hàng 59
Hình 3-22 Use case kiểm duyệt đơn hàng
61 Hình 3-23 Use case tham gia event/festival 62 Hình 3-24 Use case quản lý khohàng 63 Hình 3-25 Sơ đồ phân rã chứcnăng 65 Hình 3-26 Sơ đồ sequenceđăng nhập 66 Hình 3-27 Sơ đồsequence đăng ký 67 Hình 3-28 Sơ
đồ sequence xem chi tiết, tương tác sản phẩm 68 Hình 3-29
Sơ đồ sequence đặt hàng 69 Hình
3-30 Sơ đồ sequence tìm kiếm sản phẩm 70 Hình3-31 Sơ đồ sequence quản lý địa chỉ giao hàng 70Hình 3-32 Sơ đồ sequence sản phẩm yêu thích
71 Hình 3-33 Sơ đồ sequence xem sản phẩm tươngtự 71 Hình 3-34 Sơ đồ sequence đơn hàng củatôi 72 Hình 3-35 Sơ đồ xem, đánh giá, bìnhluận bài viết 73 Hình 3-36 Sơ đồlớp 74 Hình 3-37 Giaodiện trang chủ 93 Hình 3-38.Giao diện tìm kiếm phổ biến và gợi ý cho bạn 94 Hình 3-
39 Tab cá nhân 95 Hình3-40 Giao diện đăng nhập 96Hình 3-41 Giao diện đăng ký
97 Hình 3-42 Giao diện danhmục 98 Hình 3-43 Giao diện chitiết sản phẩm 99 Hình 3-44 Giao diện tất
cả đánh giá sản phẩm 100 Hình 3-45 Giao diệngiỏ hàng 101 Hình 3-46 Giaodiện thay đổi thuộc tính của sản phẩm 102 Hình 3-47 Giaodiện tìm kiếm sản phẩm 103 Hình 3-48.Giao diện kết quả tìm kiếm sản phẩm 104 Hình 3-
49 Giao diện thanh toán 105 Hình3-50 Giao diện địa chỉ của tôi 106
Trang 20Hình 3-51 Giao diện thêm địa chỉ .107
Hình 3-52 Giao diện quản lý đơn hàng
108 Hình 3-53 Giao diện viết đánh giá sảnphẩm 109 Hình 3-54 Giao diện bàiđăng 110 Hình 3-55 Giao diệnsản phẩm tương tự 111 Hình 3-56 Giaodiện chat 112 Hình 3-57.Giao diện yêu thích sản phẩm 113 Hình 3-58.Giao diện xem tất cả sản phẩm 114 Hình 3-
59 Giao diện thêm mới sản phẩm 114 Hình4-1 Utility matrix 115Hình 4-2 Consine similarity
117 Hình 4-3 Sự tương đồng của 2vector 118 Hình 4-4 Công thức tính
TF 118 Hình 4-5 Công thứctính IDF 119 Hình 4-6 Côngthức weighted rating 120 Hình 4-7 Côngthức tính RMSE 121 Hình 4-8 Kếtquả load dữ liệu Content-based 122 Hình 4-9 Ví
dụ feature vector của các item 123 Hình 4-10.Kết quả dự đoán content-based 123 Hình 4-11.RMSE của content-based 123 Hình 4-
12 Bảng số sao user U rate cho item I 123 Hình4-13 Các bước thực hiện Neighborhood-based CF 125 Hình4-14 Công thức tính hệ sống tương quan Pearson giữa x và y 128Hình 4-15 Ví dụ về kết trả gợi ý cho 1 user (JSON) 131Hình 4-16 Hiển thị kết quả gợi ý cho bạn trong ứng dụng
132 Hình 4-17 Ví dụ về kết trả có thể bạn thích cho 1 user(JSON) 133 Hình 4-18 Hiển thị kết quả có thể bạn thích trongứng dụng 133 Hình 4-19 Hiển thị kết quả sản phẩm tương tựtrên ứng dụng 134
DANH MỤC BẢNG
Bảng 1-1 Điểm khác biệt của đề tài
Trang 213 Bảng 3-1 Danh sách actor
usecase 36 Bảng 3-3 Đặc tảuse case kiểm duyệt sản phẩm 37 Bảng 3-4 Đặc
tả use case Kiểm duyệt bài viết 38 Bảng 3-5 Đặc
tả use case quản lý người dùng 40 Bảng 3-6.Đặc tả use case quản lý danh mục 42 Bảng 3-
7 Đặc tả use case quản lý event/ festival 44 Bảng3-8 Đặc tả use case quản lý khuyến mãi, quảng cáo 45Bảng 3-9 Đặc tả use case quản lý tình trạng đơn hàng
47 Bảng 3-10 Đặc tả use case đăng nhập, đăng
ký 48 Bảng 3-11 Đặc tả use case tìm kiếm sảnphẩm 50 Bảng 3-12 Đặc tả use case xem chi tiếtsản phẩm 51 Bảng 3-13 Đặc tả use case đặthàng 53 Bảng 3-14 Đặc tả use casequản lý địa chỉ 55 Bảng 3-15 Đặc tả use casequản lý sản phẩm yêu thích 56 Bảng 3-16 Đặc tả usecase Chat 57 Bảng 3-17 Đặc tảuse case đánh giá sản phẩm 58 Bảng 3-18 Đặc
tả use case đánh giá, bình luận bài viết 59 Bảng 3-19.Đặc tả use case quản lý cửa hàng 60 Bảng 3-
20 Đặc tả use case kiểm duyệt đơn hàng 62 Bảng3-21 Đặc tả use case tham gia event/ festival 63Bảng 3-22 Đặc tả use case quản lý kho hàng
64 Bảng 3-23 Các lớp của sơ đồlớp 76 Bảng 3-24 Các đối tượng vàthuộc tính của đối tượng 78 Bảng 3-25 Bảngorders 79 Bảng 3-26.Bảng ratings 80 Bảng 3-27.Bảng carts 80
Bảng 3-28 Bảng Shipping
addresses 81 Bảng 3-30.Bảng option_product_int 81 Bảng 3-
Trang 2231 Bảng option_product_decimal 82 Bảng3-32 Bảng option_product_varchar 82Bảng 3-33 Bảng districts 83Bảng 3-34 Bảng history_search .
data_images 83 Bảng 3-36.Bảng users 84 Bảng 3-
37 Bảng Transactions 85 Bảng3-38 Bảng rating_image 85Bảng 3-39 Bảng products 86Bảng 3-40 Bảng Categories
cart_item 87 Bảng 3-42.Bảng status_order 88 Bảng 3-
43 Bảng brands 88 Bảng3-44 Bảng provinces 88 Bảng3-45 Bảng favorites 89Bảng 3-46 Bảng attributes 89Bảng 3-47 Bảng payment 89Bảng 3-48 Bảng accounts
rating_star 90 Bảng 3-50.Bảng wards 91 Bảng 3-51.Bảng seen_products 91 Bảng 3-52.Bảng order_item 92 Bảng 4-1.Neighborhood-based cho kết quả tốt nhất (RMSE nhỏ nhất) 129
DANH MỤC TỪ VIẾT TẮT
Từ viết tắt Từ đầy đủ Giải thích
TMĐT Thương mại điện tử Hình thức mua sắm online
CSDL Cơ sở dữ liệu Cơ sở dữ liệu cho ứng dụngAPI Application Programming
Interface
Giao diện lập trình ứng dụng
Trang 23UI/ UX User Interface/ User Experience Giao diện người dùng/
Trải nghiệm người dùng
HTTP HyperText Transfer Protocol Giao thức truyền siêu
văn bản
JSON JavaScript Object Noattion Định dạng trao đổi dữ liệu
RS Recommendation System Hệ thống gợi ý sản phẩm
dựa theo thông tin người
dùngFAIIKAN Fashion Two Khang Tên của ứng dụng thực hiện
TÓM TẮT KHÓA LUẬN
Khóa luận “TÌM HIỂU THUẬT TOÁN RECOMMENDATION VÀ XÂY DỰNG ỨNG DỤNG MUA SẮM THỜI TRANG ONLINE” gồm 05 chương:
Chương 1: Giới thiệu về đề tài, đưa ra các điểm nổi bật so với các ứng dụng trước.
Tiếp đến là đề xuất các giải pháp để giải quyết các vấn đề đã đặt ra Ngoài ra,chương 1 cũng đề cập đến đối tượng nghiên cứu, phạm vi đề tài, phương phápnghiên cứu
Chương 2: Trình bày các kiến thức nền tảng, các công nghệ và thuật toán gợi ý sản
phẩm được sử dụng để xây dựng ứng dụng
Chương 3: Trình bày chi tiết quy trình xây dựng hệ thống, từ xác định và phân tích
yêu cầu bài toán cho đến xây dựng CSDL, cuối cùng là xây dựng giao diện cho ứngdụng
Chương 4: Tập trung trình bày thuật toán gợi ý sản phẩm Các kiến thức cần nắm,
các loại gợi ý, các số đo, thực nghiệm và kết quả thực nghiệm, sau đó áp dụng vàoứng dụng
Chương 5: Kết luận, rút ra được các ưu nhược điểm của ứng dụng và hướng phát
triển trong tương lai
GIỚI THIỆU CHUNG
Trang 241.1 Lý do chọn đề tài
Ngày nay với sự phát triển mạnh mẽ của nền kinh tế - xã hội , đời sống người dâncũng dần trở nên ổn định và nâng cao Do đó nhu cầu về thời trang của người dâncũng ngày càng phát triển với muôn màng sở thích khác nhau mang đến nhiều khókhăn thử thách cho các developers trong việc tạo ra các ứng dụng có thể đáp ứng tốtnhất các yêu cầu của tất cả người dùng Vì vậy những ứng dụng mua bán thời trangdần ra đời nhằm giúp người dùng lựa chọn sản phẩm thời trang nhanh chóng, phùhợp với phong cách riêng của từng người , bên cạnh đó ứng dụng cũng là nơi để cácshop thời trang có thể quảng bá những sản phẩm , phong cách phối, thiết kế củamình đến người dùng một cách dễ dàng và thuận tiện
Để tiếp cận đến nhiều người dùng, các nhà phát triển ứng dụng mong muốn ứngdụng của họ chạy được trên nhiều nền tảng đặc biệt là Android, iOS, Windows,MacOS và Web Thay vì phải tìm hiểu nhiều ngôn ngữ, công nghệ khác nhau ứngvới từng nền tảng thì hiện nay trên thị trường có nhiều công cụ hỗ trợ lập trình đanền tảng như Flutter, React Native, Ionic, … giúp các nhà phát triển ứng dụng tiếtkiệm thời gian, chi phí dành cho quá trình phát triển ứng dụng
Trong số đó có Flutter mặc dù là công cụ ra đời muộn nhất nhưng có tốc độ pháttriển vượt trội và nhiều ưu điểm so với các công nghệ đi trước, nhiều công ty côngnghệ lớn sử dụng Flutter để phát triển sản phẩm của mình như Google, Alibaba,Tencent, … Ứng dụng xây dựng với Flutter hoạt động với hiệu năng mạnh mẽ vàhiếm có vấn đề về mặt tương thích, ngoài ra đây còn là công cụ mã nguồn mở nênngày càng nhiều lập trình viên và công ty quan tâm đến công nghệ mới này
Và tất cả đó cũng chính là lí do nhóm thực hiện đề tài để tạo ra ứng dụng Fashion Shop 2K cùng với hệ thống gợi ý đáp ứng được những yêu cầu người dùng hiện nay
Trang 25có thể thích dựa trênviệc dự đoán rating củangười dùng theo cácratings đã có hoặc hiểnthị các sản phẩm phổbiến nếu chưa có rating
Chưa có
Giỏ hàng Phần Giỏ hàng có phần
chọn item cho tùy vàongười dùng muốn thanhtoán những item cần vànhững item còn lại vẫncòn trong giỏ
Khi thanh toán chỉ có thểxóa hoặc thêm chứ không thể tùy chọn items để thanh toán
Mục đánh giá Xây dựng các mục đánh
giá của sản phẩm có thểbình luận, like,… đểngười dùng có thể tươngtác với nhau, hỏi nhau
về độ tin cậy, thông tincủa shop, shipping,…
Trang 26một vài top đánh giá để người dùng có thể nhìn thấy đầu tiên khi vào xem đánh giá của một sản phẩm.
Bảng 1-1 Điểm khác biệt của đề tài
1.2.2 Điểm mới nổi bật của đề tài
Sau quá trình khảo sát, lắng nghe ý kiến người dùng, giải pháp mà nhóm đề ra để đáp ứng nhu cầu của người dùng bằng cách thêm mục “Có thể bạn sẽ thích” ở trang chủ để người dùng có thể nhìn thấy được sản phẩm mà mình có thể thích, việc này tạo ra sự ấn tượng đối với người dùng để việc mua bán trở nên thuận lợi hơn cho cả người mua lẫn người bán
Bên cạnh đó nhóm có đề ra một ý tưởng đó là tạo nên một mạng xã hội về thời trang
để các shop thời trang hoặc các nhà thiết kế đại diện cho shop có thể đăng tải nhữngbản thiết kế, bản phối, cũng như sản phẩm của mình lên những post (giống với statuscủa Facebook) Những người mua sẽ tìm thấy những bài viết từ những nhà thiết kế hay shop họ đã theo dõi và những bài viết mang tính tương tự được hệ thống đề xuấtthông qua những tương tác của người dùng đối với các sản phẩm Nếu là người dùngmới chưa có theo dõi bất kì ai, họ có thể tìm thấy những bài viết thông qua các cuộcthi do admin tổ chức, events,… và tùy chọn những danh mục họ muốn để tìm thấynhững bài viết được đánh giá cao ( lượt like, comments của bài viết,…) Đặc biệt khiđăng các bài viết, người đăng phải gắn các sản phẩm của mình vào các bài viết đó,
để khi người mua có thể click vào bài viết để chọn những sản phẩm liên quan đếnbài viết đó Các bài viết sẽ được đăng tải sau khi được kiểm duyệt bởi admin nếubài viết có đủ tiêu chí đề ra
Điều này giúp cho người mua có thể dễ dàng tìm thấy những sản phẩm hay phong cách thiết kế mà họ thích, từ đó thường xuyên quay lại sử dụng app để
3 cập nhật trend, theo dõi những bài viết của các nhà thiết kế cũng như shop
Trang 27yêu thích Đối với người bán, họ có thể quảng bá shop, sản phẩm của mìnhthông qua app, dễ tiếp cận được những người mua mới cũng như thườngxuyên thu hút được những người mua đã theo dõi shop của mình
1.2.3 Tính khác biệt, cải thiện về chức năng so với các app hiện nay
Chọn lọc các chức năng tiện dụng nhất của top các ứng dụng mua bán thời trang lớn hiện nay để đưa vào ứng dụng của mình
Khảo sát qua các ứng dụng hiện nay như Zalora, SHEIN, Clothes Shop, ZAFUL nhóm nhận thấy một số hạn chế trong nghiệp vụ giỏ hàng và thanh toán của:
+ Hầu hết các app: Giỏ hàng chỉ có thể chọn mua tất cả chứ không thể tùy chọnnhững sản phẩm muốn thanh toán và lưu lại các sản phẩm chưa thanh toán
Điều này đã làm dẫn đến sự hạn chế thoải mái lựa chọn và mua sắm của người dùng
Ứng dụng Fashion Shop có thêm chức năng chọn và bỏ chọn trong phần giỏ hàng và tiến hành thanh toán cho người dùng
Ứng dụng sẽ áp dụng gợi ý sản phẩm cho từng nhóm người dùng khác nhau dựa trênlịch sử mua hàng, đánh giá của họ đối với sản phẩm Điều này giúp tỉ lệ mua hàngcủa người dùng cao hơn, cải thiện doanh thu của người bán và người mua cũng cóthể mua được sản phẩm ưng ý
1.3 Phạm vi nghiên cứu
Tập trung tìm hiểu các kỹ thuật và thuật toán gợi ý sản phẩm
Xây dựng ứng dụng thương mại điện tử hướng đến người dùng ở Việt Nam
Ứng dụng Fashion Shop được nhóm xây dựng bằng Flutter đa nền tảng ( Android /iOs) và Service được xây dựng bằng ngôn ngữ Java
Tìm hiểu về hệ thống gợi ý sản phẩm đối với 2 phương pháp: Content-based
method, Collaborative filtering method dựa trên các khía cạnh:
4
Ý tưởng
Phương thức
Trang 28Ưu, nhược điểm
Triển khai, đánh giá độ chính xác của từng phương pháp dựa trên dữ liệu thửnghiệm Áp dụng hệ thống gợi ý sản phẩm vào ứng dụng Fashion Shop để gợi ý sảnphẩm cho người dùng
1.4 Đối tượng nguyên cứu
Hệ thống recommendation system cho sản phẩm
Đối tượng trong phạm vi đề tài hướng đến:
Những doanh nghiệp, nhà bán hàng
Người tiêu dùng
1.5 Phương pháp nguyên cứu
Tìm hiểu các thuật toán gợi ý sản phẩm hiện có
Tìm hiểu nghiệp vụ, quy trình hoạt động của shop mua sắm thời trang
Phác họa hệ thống tổng quát (thiết kế dữ liệu, xử lý dữ liệu,…)
Tham khảo các ứng dụng tương tự: Zalora, SHEIN, Clothes Shop, ZAFUL,… Tham khảo ý kiến của giảng viên hướng dẫn để được định hướng đúng, đạt kết quả tốt nhất
5 Thiết kế giao diện, thực thi các chức năng, quản lý code theo mô hình bloc với Flutter Crawl, tạo bộ dữ liệu mẫu cho ứng dụng
Vận dụng, tùy chỉnh, đánh giá các thuật toán phù hợp với đề tài
Trang 296
KIẾN THỨC NỀN TẢNG
2.1 Flutter
2.1.1 Giới thiệu về Flutter
Flutter là một công cụ mới được cung cấp bởi Google cho phép các nhà phát triểnxây dựng các ứng dụng đa nền tảng có thể được thực hiện trong các hệ thống khácnhau chẳng hạn như Android hay iOS, Web và Desktop chỉ với một codebase chung.Các đặc điểm của Flutter:
- Cross-platform: build đa nền tảng có thể được thực hiện trong các hệ thốngkhác nhau chẳng hạn như Android hay iOS ,web và desktop chỉ với mộtcodebase chung
- Phát triển nhanh (đối với developer): Với Flutter Hot Reload giúp bạn nhanhchóng và dễ dàng thử nghiệm, xây dựng giao diện người dùng, thêm tínhnăng và sửa lỗi
- Xây dựng UI đẹp và dễ dàng: Làm hài lòng người dùng của bạn với các tiệních Material Design and Cupertino tích hợp sẵn của Flutter, API chuyển độngphong phú, Scrolling tự nhiên mượt mà trên các nền tảng
- Framework hiện đại và reactive: Dễ dàng tạo giao diện người dùng của bạn vớiframework hiện đại, reactive của Flutter và tập hợp các platform, layout vàwidget phong phú Giải quyết các thách thức giao diện người dùng khó khăncủa bạn với các API mạnh mẽ và linh hoạt cho 2D, animation, gesture, hiệuứng và hơn thế nữa
- Truy cập các tính năng và SDK native: Làm cho ứng dụng của bạn trở nênsống động với API của platform, SDK của bên thứ ba và native code Fluttercho phép bạn sử dụng lại mã Java, Swift và ObjC hiện tại của mình và truycập các tính năng và SDK native trên iOS và Android
7
- Phát triển ứng dụng thống nhất: Flutter có các công cụ và thư viện để giúp bạn
Trang 30dễ dàng đưa ý tưởng của mình vào cuộc sống trên iOS và Android
2.1.2 Tại sao sử dụng Flutter?
Flutter là một mã nguồn mở được cung cấp một cách nhanh chóng và rõ ràng cho các nhà phát triển để xây dựng các ứng dụng gốc trên cả iOS và Android
Thông qua “Stateful Hot Reload” and “Hot Restart”, Flutter giúp lưu lại những trạngthái và update những thay đổi bạn đã thực hiện không cần phải chạy Gradle buildkhác Do đó thời gian quá trình phát triển sản phẩm được giảm xuống đáng kể Flutter có một cơ chế rất đặc biệt cho với các flat-form khác đó là “Everything is awidget” giúp các developers dễ dàng xây dựng giao diện cũng như dễ dàng thay đổi
và quản lý UI
Hiện nay, Flutter đang rất được ưa chuộng với các developer bởi sự linh hoạt, đơn giản và nhanh chóng trong việc phát triền sản phẩm
2.2 Java Spring Boot
2.2.1 Giới thiệu về Java Spring Boot
Spring là một Framework phát triển các ứng dụng Java được sử dụng bởi hàng triệulập trình viên Nó giúp tạo các ứng dụng có hiệu năng cao, dễ kiểm thử, sử dụng lạicode…
Để khởi tạo một dự án Spring khá là vất vả và tốn nhiều công sức Người lập trìnhphải khai báo những dependency trong pom.xml, cấu hình XML hoặc các annotationcực kỳ phức tạp Giờ đây, việc tạo ra các ứng dụng này sẽ được thực hiện một cáchđơn giản, nhanh chóng hơn rất nhiều chỉ với Spring Boot
Spring Boot chính là một Java framework siêu to và khổng lồ và có nhiều khả nănghữu ích vì nó có thể giúp lập trình viên giải quyết rất nhiều vấn đề So vớiframework Spring thông thường, Spring Boot tỏ ra những lợi thế vượt trội Khi sửdụng Spring Boot, rất nhiều thứ được cải tiến hỗ trợ lập trình viên như:
8
• Auto config: tự động cấu hình thay lập trình viên, bạn chỉ cần viết code
và tiến hành chạy hệ thống là được
Trang 31• Dựa trên các Annotation để tạo lập các bean thay vì XML.
• Server Tomcat có thể được nhúng ngay trong file JAR build ra và có thểchạy ở bất kì đâu mà java chạy được
2.2.2 Tại sao sử dụng Java Spring Boot
Giúp tạo được ứng dụng độc lập dựa trên Spring, có thể tự chạy được java – jar
Có ít cấu hình, có khả năng tự động cấu hình lại Spring khi cần, từ đó giúp các thànhviên có thể tiết kiệm thời gian viết code và tăng thêm năng suất
Giữ đầy đủ các tính năng của Spring Framework
Spring boot không yêu cầu cấu hình XML và không sinh code cấu hình Không cần phải triển khai file WAR mà thực hiện nhúng trực tiếp các ứng dụng server Giúp cung cấp nhiều plugin
2.3 Hệ quản trị cơ sở dữ liệu MySQL
Hình 2-1 Sự phát triển và độ phổ biến của MySQL
9
2.3.1 Giới thiệu MySQL
MySQL là một hệ quản trị cơ sở dữ liệu nhanh và tiện gọn, dễ dàng sử dụng để tương tác với các công nghệ tiên tiến ngày nay như C#, Java, PHP,… Nó được phát triển với công ty MYSQL AB ở Thụy Điển năm 2004 và sau nhiều lần thay đổi chủ
sở hữu, cuối cùng nó đã vào tay gã khổng lồ Oracle vào năm 2010
Trang 322.3.2 Tại sao sử dụng MySQL
Nó khá phổ biến với giới lập trình viên bởi:
- MySQL là mã nguồn mở, hoàn toàn miễn phí khi sử dụng
- MySQL sử dụng form chuẩn thuộc hệ SQL
- MySQL dễ dàng xử lý ngay cả trên các tập dữ liệu lớn
- MySQL hỗ trợ giao dịch nhanh Giao dịch ACID (Atomic-Consistent Durable) hoàn thiện
Isolated-2.4 Google Firebase Cloud
Hình 2-2 Google Firebase Cloud
10
2.4.1 Giới thiệu Firebase
Firebase là một dịch vụ cơ sở dữ liệu thời gian thực hoạt động trên nền tảng đámmây được cung cấp bởi Google nhằm giúp các lập trình phát triển nhanh các ứngdụng bằng cách đơn giản hóa các thao tác với cơ sở dữ liệu
Ra mắt muộn hơn các công nghệ khác, Firebase được ra đời vào năm 2014 và đượcgoogle mua lại vào năm 2016 Từ đó Firebase đã tăng từ 110.000 lên 470.000 nhàphát triển và vẫn đang nắm giữ tốc độ tăng trưởng đáng kể Firebase được tin dùng
và phổ biến bởi vì nó giúp nhà phát triển có thể xây dựng hệ thống Client – Server
mà công sức cũng như chi phí bỏ ra cho phía Server giảm đi đáng kể
Trang 332.4.2 Chức năng chính của Google Firebase
Realtime Database – Cơ sở dữ liệu thời gian thực
- Dữ liệu được firebase lưu trữ có dạng JSON và được đồng bộ cơ sỡ dữ liệu đếntất cả user theo thời gian thực Điều này sẽ giúp xây dựng hệ thống đa nềntảng và tất cả user cùng dùng chung một database được cung cấp với firebase,điều tuyệt vời hơn là firebase tự động cập nhật mỗi khi có sự thay đổi dữ liệu
Firebase Authentication – Hệ thống xác thực của Firebase
- Firebase dễ dàng tích hợp các công nghệ xác thực của các ông lớn trên internetnhư Google, Facebook,…hoặc một hệ thống xác thực tự xây dựng trong ứngdụng ở bất kỳ nền tảng nào như Android, iOS
Firebase storage
- Firebase storage lưu trữ được nhiều dạng dữ liệu như tập tin, hình ảnh, videomột cách dễ dàng Ngoài ra nó còn tích hợp Google security giúp tải lên và tải
về các ứng dụng firebase một cách tiện lợi
Firebase Cloud Messaging
11
- Bên cạnh các tính năng trên, Firebase còn cung cấp địch vụ Cloud Messaging,một giải pháp đa nền tảng, cho phép mọi người gửi thông điệp miễn phí dướidạng tin nhắn theo thời gian thực
2.4.3 Lợi ích của Google Firebase
Triển khai ứng dụng cực nhanh
- Với firebase, lập trình viên sẽ giảm được nhiều thời gian cho việc xây dựng vàphát triển và đồng bộ cơ sở dữ liệu, nó diễn ra nhanh chóng và tự động quacác API mà Firebase cung cấp Ngoài ra, nếu lập trình viên muốn xây dựngứng dụng đa nền tảng, điều này hoàn toàn dễ dàng vì Firebase cũng hỗ trợ đanền tảng
Trang 34- Không chỉ có vậy, quá trình đăng ký và đăng nhập vào ứng dụng sẽ tiện lợi và
dễ dàng hơn bằng các hệ thống xác thực mà Firebase đã cung cấp
Tính linh hoạt và khả năng mở rộng
- Firebase cho phép nhà phát triển xây dựng server của riêng mình để thuận tiệntrong quá trình quản lý Firebase sử dụng hệ quản trị cơ sở dữ liệu là NoSQL,giúp database dễ dàng mở rộng các bảng, các trường tùy theo ý thích của mỗilập trình viên
12
2.5 ReactJS
2.5.1 Giới thiệu ReactJS
React (Hay ReactJS, React.js) là một thư viện Javascript mã nguồn mở để xây dựngcác thành phần giao diện có thể tái sử dụng Nó được tạo ra bởi Jordan Walke, một
kỹ sư phần mềm tại Facebook Người bị ảnh hưởng bởi XHP ( Một nền tảng thànhphần HTML cho PHP)
React lần đầu tiên được triển khai cho ứng dụng Newsfeed của Facebook năm 2011,sau đó được triển khai cho Instagram.com năm 2012 Nó được mở mã nguồn (opensourced) tại JSConf US tháng 5 năm 2013
Hiện nay, thư viện này nhận được rất nhiều sự quan tâm đến từ cộng đồng Nó đangđược bảo trì (maintain) bởi Facebook và Instagram, cũng với sự đóng góp của cộngđồng các lập trình viên giỏi trên Thế giới
Trang 35Có rất nhiều các công ty lớn sử dụng React cho các dự án của họ, chẳng hạn như Netflix, Airbnb,…
2.5.2 Vấn đề và giải pháp
Về cơ bản, việc xây dựng một ứng dụng MVC phía client với giàng buộc dữ liệu 2chiều (2 way data-binding) là khá đơn giản Tuy nhiên nếu dự án ngày càng mởrộng, nhiều tính năng hơn, làm cho việc bảo trì dự án gặp khó khăn, đồng thời hiệunăng cũng bị giảm Bạn cũng có thể giải quyết vấn đề đó bằng các thư viện khácnhư Backbone.js hay Angular.js, tuy nhiên bạn sẽ thấy các hạn chế của chúng khi
dự án của bạn ngày càng lớn
React ra đời sau AngularJS, nó sinh ra để dành cho các ứng dụng lớn dễ dàng quản
lý và mở rộng Mục tiêu chính của React là nhanh, đơn giản, hiệu năng cao và dễ dàng mở rộng
2.5.3 Tại sao sử dụng ReactJS?
Giải quyết được vấn đề của tầng View
13
- Nó giải quyết vấn đề của tầng View trong mô hình MVC (Model-View
Controller)
- Giúp viết mã Javascript dễ dàng hơn với JSX
- Nó sử dụng JSX (JavaScript Syntax eXtension) (Phần bổ xung cú pháp
Javascript) Là một sự hòa trộn giữa Javascript và XML, vì vậy nó cũng dễ dàng hơn khi viết mã, và thân thiện hơn với các lập trình viên
"Thành phần hóa" giao diện
- React cho phép lập trình viên tạo ra các Component (Thành phần) tương ứngvới các phần của giao diện Các component này có thể tái sử dụng, hoặc kếthợp với các Component khác để tạo ra một giao diện hoàn chỉnh