PHẦN MỞ ĐẦU 1. Tính cấp thiết của đề tài Kinh doanh là hoạt động diễn ra sôi nổi nhất của con người, mỗi năm rất nhiều công ty kinh doanh và cửa hàng kinh doanh ra đời và đưa các sản phẩm vào thị trường nóng hổi này. Đi cùng với sự phát triển công nghệ thông tin thì các ứng dụng quản lý, mua bán là yêu cầu rất cấp thiết cho các công ty. Mô hình kinh doanh trên toàn cầu tiếp tục thay đổi đáng kể với sự ra đời của thương mại điện tử.
Nhiều quốc gia trên thế giới cũng đã đóng góp vào sự phát triển của thương mại điện tử. Ví dụ, nước Anh có chợ thương mại điện tử lớn nhất toàn cầu khi đo bằng chỉ số chi tiêu bình quân đầu người, con số này cao hơn cả Mỹ. Kinh tế Internet ở Anh có thể tăng 10% từ năm 2010 đến năm 2015. Điều này tạo ra động lực thay đổi cho ngành công nghiệp quảng cáo.
[1] Trong số các nền kinh tế mới nổi, sự hiện diện của thương mại điện tử ở Trung Quốc tiếp tục được mở rộng. Với 384 triệu người sử dụng Internet, doanh số bán lẻ của cửa hàng trực tuyến ở Trung Quốc đã tăng 36,6 tỉ USD năm 2009 và một trong những lý do đằng sau sự tăng trưởng kinh ngạc là cải thiện độ tin cậy của khách hàng. Các công ty bán lẻ Trung Quốc đã giúp người tiêu dùng cảm thấy thoải mái hơn khi mua hàng trực tuyến. [1] Thương mại điện tử cũng được mở rộng trên khắp Trung Đông.
Với sự ghi nhận là khu vực có tăng trưởng nhanh nhất thế giới trong việc sử dụng Internet từ năm 2000 đến năm 2009, hiện thời khu vực có hơn 60 triệu người sử dụng Internet. Bán lẻ, du lịch và chơi game là các phần trong thương mại điện tử hàng đầu ở khu vực, mặc dù có các khó khăn như thiếu khuôn khổ pháp lý toàn khu vực và các vấn đề hậu cần trong giao thông vận tải qua biên giới. [1] Thương mại điện tử đã trở thành một công cụ quan trọng cho thương mại quốc tế không chỉ bán sản phẩm mà còn quan hệ với khách hàng. Đối tượng nghiên cứu Đối với đề tài này, đối tượng nghiên cứu dựa trên nhu cầu sử dụng, chủ yếu là tham khảo sách, tài liệu của các Dev đã có kinh nghiệm.
Cụ thể như sau: • Tập trung nghiêm cứu Restful API, NodeJS, ExpressJS để xây dựng nên hệ thống các API dùng để truy vấn dữ liệu với độ chính xác cao và một tốc độ đảm bảo. • Sử dụng hệ quản trị cơ sở dữ liệu NoSQL là MongoDB để lưu trữ dữ liệu trong hệ thống. • Về phần giao diện cho người sử dụng nhóm sinh viên tiến hành nghiên cứu thư viện ReactJS, Redux (Toolkit) kèm theo một số thư viện được hỗ trợ cho ReactJS. để xây dựng và xử lý giao diện và cho người dùng sử dụng trên website.
Về phần bảo mật hệ thống, tiến hành nghiên cứu công nghệ Json Web Token làm bảo mật cho hệ thống, tất cả người dùng đăng nhập và các tính năng đều được xác thực và kiểm soát thông qua JWT. • Ngoài ra nhóm sinh viên còn nghiên cứu FPT AI – một trí tuệ nhân tạo được phát hành bởi FPT giúp người dùng có thể tạo ra các botchat bằng việc cung cấp các dữ liệu kịch bản cho nó. Phạm vi nghiên cứu Website chủ yếu tập trung vào các nghiệp vụ cơ bản, đảm bảo việc mua bán diễn ra suôn sẻ. Đồng thời thêm các tính năng đánh giá và bình luận giúp người mua dễ dàng tiếp cận với thông tin chi tiết và chất lượng của sản phẩm hơn.
Ngoài ra còn tích hợp các tính năng thống kê giúp ích cho việc tính toán và tính năng chat để người dùng dễ dàng tương tác với nhân viên cửa hàng. Phương pháp nghiên cứu Nhóm sinh viên học hỏi, tìm tòi các tài liệu trên Internet, các bài báo cáo cũ trong thư viện đại học Sư Phạm Kỹ Thuật để thực hiện báo cáo này. Vấn đề nghiệp vụ, các tác giả đã thông qua những lập trình viên có kinh nghiệm và đặc biệt là sự giúp đỡ đến từ giảng viên hướng dẫn. Về vấn đề lập trình, nhóm tác giả đã nghiên cứu qua các tài liệu của ReactJS và NodeJS, từ đó đưa ra một hướng giải quyết tối ưu.
Mục tiêu của đề tài • Xây dựng website buôn bán sản phẩm (cụ thể là mặt hàng giày dép) với những yêu cầu sau: o Cho phép người dùng xem danh sách sản phẩm, lọc và tìm kiếm sản phẩm o Cho phép người dùng xem chi tiết sản phẩm, đánh giá. o Cho phép người dùng thêm và xóa sản phẩm ở giỏ hàng. o Cho phép người dùng thanh toán (Có thể bằng ví điện tử). o Cho phép người dùng theo dõi trạng thái của đơn hàng.
o Cho phép người dùng tương tác với cửa hàng thông qua bot chat. o Cho phép người dùng xem lịch sử mua hàng. o Cho phép người dùng xem các khuyến mãi. • Mục tiêu về công nghệ: o Tìm hiểu ưu điểm, nhược điểm, cách hoạt động, cú pháp sử dụng của công nghệ MERN: MongoDB, ExpressJS, React, NodeJS o Cài đặt bộ công cụ và môi trường sử dụng được MERN o Dùng FPT AI để xây dựng bot chat.
o Tìm hiểu Vercel để deploy dự án lên môi trường thật. • Áp dụng kiến thức đã học trước đây của các môn học khác để hoàn thành việc xây dựng website. Ý nghĩa khoa học và thực tiễn Đối với doanh nghiệp: Dễ dàng quản lý các sản phẩm, khách hàng của mình, đồng thời tính toán và thống kê một cách chính xác hơn. Đối với khách hàng: Tiếp cận với sản phẩm dễ dàng với một thiết bị có thể kết nối Internet, giao dịch nhanh hơn.
Tổng quan về MERN Stack MERN Stack là một bộ kết hợp ngôn ngữ phía server và ngôn ngữ thao tác cơ sở dữ liệu. MERN Stack bao gồm các công nghệ: MongoDB, ExpressJS, ReactJS và NodeJS. Hình 2-1 Mern Stack 2. MongoDB Hình 2-2 MongoDB Là một hệ quản trị cơ sở dữ liệu dạng NoSQL viết bằng C++.
Đặc điểm chính là không ràng buộc (nonrelational) và phân tán (distributed). Đây còn là một mã nguồn mở (open source) nên rất dễ để lập trình viên tiếp cận, khả năng co giản theo chiều ngang (Horizontal scalable) có thể lưu trữ, xử lý từ một lượng rất nhỏ cho tới dữ liệu cực lớn, lên đến hàng petabytes dữ liệu trong hệ thống cần có độ chịu tải, chịu lỗi cao với những yêu cầu về tài nguyên phần cứng thấp. 14 Lợi thế của MongoDB: • Ít Schema: MongoDB là một hệ quản trị cơ sở dữ liệu gồm các Document được chứa trong cá Collection. Số trường, nội dung và kích cỡ của Document này có thể khác với Document khác.
o Cấu trúc của một đối tượng là rõ ràng. o Những tính năng như Join (SQL) sẽ được đơn giản hóa hơn. • Khả năng truy vấn sâu hơn. MongoDB hỗ trợ các truy vấn động trên các Document bởi sử dụng một ngôn ngữ truy vấn riêng với công dụng tựa như SQL.
• MongoDB có thể mở rộng cả về chiều rộng lẫn chiều sâu một cách dễ dàng. • Sử dụng bộ nhớ nội tại để lưu giữ phần công việc, giúp truy cập dữ liệu nhanh hơn. Đặc điểm của MongoDB: • Kho lưu định hướng Document: Dữ liệu được lưu trong các tài liệu kiểu JSON dễ dàng việc xử lí dữ liệu. • Lập chỉ mục trên bất kỳ thuộc tính nào.
• Các truy vấn đa dạng, mạnh mẽ không khác gì SQL. • Cập nhật nhanh hơn, đó là điểm mạnh nhất mà người ta dùng MongoDB. Các kiểu dữ liệu của MongoDB: • Chuỗi: đây là kiểu dữ liệu được sử dụng phổ biến nhất để lưu trữ dữ liệu. • Boolean: kiểu dữ liệu này được sử dụng để lưu trữ một trong hai giá trị True/False.
• Double: kiểu dữ liệu này được sử dụng để lưu các giá trị thực dấu chấm động (số thập phân). • Min/Max keys: Kiểu dữ liệu này được sử dụng để so sánh một giá trị với các phần tử BSON thấp nhất và cao nhất. 15 • Mảng: Kiểu dữ liệu này được sử dụng để lưu giữ các mảng hoặc danh sách hoặc nhiều giá trị vào trong một key. • Timestamp: Giúp thuận tiện cho việc ghi chép hoặc đánh dấu thời điểm một Document được sửa đổi hoặc được thêm vào, kiểu dữ liệu này sẽ được tạo tự động và lấy thời gian ngay khi một đối tượng mới được tạo ra và lưu vào cơ sở dữ liệu.
• Object: Kiểu dữ liệu này được sử dụng cho các Document được nhúng vào, có thể nói đây là kiểu dữ liệu được dùng rất phổ biến trong lập trình. • Null: Kiểu dữ liệu này được sử dụng để lưu một giá trị Null. • Symbol: Kiểu dữ liệu này được sử dụng giống như một chuỗi, tuy nhiên, nói chung nó được dành riêng cho các ngôn ngữ mà sử dụng kiểu symbol cụ thể. • Date: Kiểu dữ liệu này được sử dụng để lưu giữ ngày và giờ hiện tại trong định dạng UNIX time.
Bạn có thể xác định ngày và giờ riêng cho bạn bằng việc tạo đối tượng “Date” và truyền ngày, tháng, năm vào trong đó. • Object ID: Kiểu dữ liệu này được sử dụng để lưu giữ ID của Document, dữ liệu này sẽ “duy nhất”, tức là không trùng với những Document khác trong một Collection và thường sẽ tự được khởi tạo khi một đối tượng được thêm vào cơ sở dữ liệu. • Binary data: Kiểu dữ liệu này được sử dụng để lưu giữ dữ liệu nhị phân. • Code: Kiểu dữ liệu này được sử dụng để lưu giữ JavaScrip code vào trong Document.
ExpressJS Là một web application framework cho NodeJS, cung cấp các tính năng mạnh mẽ cho việc xây dựng một ứng dụng web đúng nghĩa hoặc lai. Là framework phổ biến và được sử dụng rộng rãi nhất của NodeJS, được xây dựng trên cấu trúc ngữ pháp của Sinatra. [2] 16 Ý tưởng đằng sau ExpressJS là đưa đến một framework nhẹ, dễ dàng tiếp cận để phát triển các ứng dụng web từ nhỏ đến lớn hay hybrid. [2] Hình 2-3 ExpressJS Express cũng có thể sử dụng để xây dựng một API mạnh mẽ và thân thiện với người dùng, vì nó cung cấp rất nhiều tiện ích HTTP và middleware cho việc kết nối.
Các Module quan trọng được cài đặt cùng với express: • Body-parser: Là một lớp trung gian NodeJS để xử lý JSON, ký tự, dữ liệu thô và mã hóa các URL. • Cookie-parser: Giúp chuyển đổi header của Cookie và phân bố đến các request. • Multer: Là một thành phần trung gian trong NodeJS để xử lý phần muitipart/form-data.