CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. KIẾN TRÚC HỆ THỐNG Hệ thống kiến trúc cho trang web mà nhóm em sử dụng là kiến trúc ứng dụng ReactJS + NodeJS + MongoDB, là một kiến trúc phổ biến được sử dụng trong phát triển ứng dụng web hiện đại. Kiến trúc này kết hợp các công nghệ mạnh mẽ để tạo ra một hệ thống có hiệu suất cao, linh hoạt và dễ bảo trì. Các thành phần trong kiến trúc: - ReactJS là một thư viện JavaScript phổ biến và mạnh mẽ để xây dựng giao diện người dùng (UI) cho ứng dụng web, tập trung vào việc xây dựng các thành phần giao diện tái sử dụng và sử dụng mô hình dựa trên các thành phần, giúp tạo ra giao diện người dùng tương tác và linh hoạt.js là một nền tảng server-side được xây dựng trên JavaScript Engine của Google Chrome, cụ thể là V8 Engine.
Ryan Dahl là người sáng lập và phát triển Node.js, và phiên bản mới nhất của nó là v0. - MongoDB là một dạng phần mềm cơ sở dữ liệu sử dụng mã nguồn mở NoSQL. Nó có thể hỗ trợ trên nhiều nền tảng khác nhau và được thiết kế với mục đích hướng đến đối tượng, có hiệu suất cao cùng với tính khả dụng tốt và dễ dàng mở rộng. Với kiến trúc này, phần front-end được xây dựng bằng ReactJS và phần back- end được xây dựng bằng NodeJS để cung cấp các API và xử lý logic.MongoDB được sử dụng làm cơ sở dữ liệu để lưu trữ và truy xuất dữ liệu của trang web.
Kiến trúc này cung cấp sự phân chia rõ ràng giữa phần giao diện người dùng và phần xử lý logic, đảm bảo tính mở rộng và bảo trì dễ dàng, cho phép phát triển độc lập giữa front-end và back-end.js là một nền tảng được xây dựng trên thời gian chạy JavaScript của Chrome, giúp việc xây dựng các ứng dụng mạng nhanh chóng và có khả năng mở rộng. Sử dụng kiến trúc hướng sự kiện event-driven và không chặn (non-blocking), Node.js 19 trở nên nhẹ nhàng và hiệu quả, đặc biệt phù hợp cho các ứng dụng real-time với lượng dữ liệu lớn chạy trên các thiết bị phân tán. Là một môi trường chạy mã nguồn mở và đa nền tảng, Node.js thường được sử dụng để phát triển các ứng dụng mạng.js cung cấp một thư viện đa dạng bao gồm nhiều mô-đun JavaScript khác nhau, giúp đơn giản hóa quá trình phát triển ứng dụng web sử dụng Node.js ở mức độ lớn. CÁC CÔNG NGHỆ SỬ DỤNG 1.
Khái niệm ReactJS Reactjs là một thư viện Javascript mã nguồn mở hỗ trợ xây dựng các thành phần giao diện nhanh gọn và tiện lợi. Bình thường các lập trình viên sẽ nhúng javascript vào code HTML thông qua các attribute như AngularJS nhưng với Reactjs làm việc như một thư viện cho phép nhúng HTML vào javascript thông qua JSX. Qua đó bạn có thể dễ dàng lồng các đoạn HTML vào trong JSX làm cho các component dễ hiểu và dễ sử dụng hơn. Đặc trưng của Reactjs: Components (thành phần): React cho phép bạn tạo ra các thành phần độc lập, dễ dàng quản lý và có thể tái sử dụng.
Mỗi component có thể chứa mã HTML, CSS và 20 JavaScript riêng biệt. Có 2 loại component chính là Class component và Function component. Virtual DOM (DOM ảo): React tạo ra một bản sao ảo của DOM và so sánh với trạng thái trong component của DOM thực (real DOM), sau đó cập nhật những phần khác biệt, thay vì phải cập nhật toàn bộ DOM thực mỗi khi có thay đổi. Single-Page Applications (SPA): React tích hợp tốt với các thư viện định tuyến (routing) và quản lý trạng thái của ứng dụng nên thích hợp với việc phát triển các SPA.
Hệ sinh thái đa dạng: Với nhiều thư viện và công cụ bổ sung như React Router, Redux, Material-UI,… 1. Cách thức hoạt động và ưu điểm của Reactjs Ưu điểm của Reactjs: - ReactJS giúp cho việc viết các đoạn code Javascript sẽ trở nên dễ dàng hơn vì nó sử dụng một cú pháp đặc biệt đó chính là cú pháp JSX. Thông qua JSX cho phép nhúng code HTML và Javascript. - ReactJS cho phép Developer phá vỡ những cấu tạo UI phức tạp thành những component độc lập.
Dev sẽ không phải lo lắng về tổng thể ứng dụng web, giờ đây Developer dễ dàng chia nhỏ các cấu trúc UI/UX phức tạp thành từng component đơn giản hơn. - Đi kèm với ReactJS là rất nhiều các công cụ phát triển giúp cho việc debug code một cách dễ dàng hơn. - Một trong những ưu điểm nữa của ReactJS đó là sự thân thiện với SEO. Hầu như các JS Frameworks không thân thiện với các tìm kiếm mặc dù đã được cải thiện nhiều nhưng dưới sự hỗ trợ của các render dữ liệu trả về dưới dạng web page giúp cho SEO chuẩn hơn.
Cách thức hoạt động của Reactjs: 21 - Khởi tạo ứng dụng React với các lệnh khởi tạo và một component gốc để xây dựng giao diện người dùng. cần có kiến thức cơ bản về AI và các mô hình ngôn ngữ lớn. - Xây dựng component độc lập, thể hiện cho một phần cụ thể của giao diện. Mỗi component là một hàm JavaScript tạo ra một phần tử HTML.
- Khi người dùng tương tác với ứng dụng React, cụ thể là trạng thái trong một component bất kỳ nào thay đổi, React sẽ gọi hàm render() và đồng thời một cây Elements mới được tạo ra. Nó được gọi là Virtual DOM. - React chạy thuật toán diffing để xác định những thay đổi trong DOM ảo, so sánh nó với DOM hiện tại để tìm ra sự khác biệt khi trạng thái trong component thay đổi. - Cập nhật những thay đổi ở những nơi cần thiết của DOM thực (real DOM) thay vì phải cập nhật toàn bộ.
- Hiển thị website với trạng thái mới với các mục cập nhật được thêm vào UI. Khái niệm NodeJS Node.js là một nền tảng được xây dựng trên thời gian chạy JavaScript của Chrome, giúp việc xây dựng các ứng dụng mạng nhanh chóng và có khả năng mở rộng. Sử dụng kiến trúc hướng sự kiện event-driven và không chặn (non-blocking), Node.js 22 trở nên nhẹ nhàng và hiệu quả, đặc biệt phù hợp cho các ứng dụng real-time với lượng dữ liệu lớn chạy trên các thiết bị phân tán. Là một môi trường chạy mã nguồn mở và đa nền tảng, Node.js thường được sử dụng để phát triển các ứng dụng mạng.js cung cấp một thư viện đa dạng bao gồm nhiều mô-đun JavaScript khác nhau, giúp đơn giản hóa quá trình phát triển ứng dụng web sử dụng Node.js ở mức độ lớn.
Ưu và nhược điểm của NodeJS Ưu điểm: - I/O hướng sự kiện không đồng bộ: Cho phép nhà phát triển xử lý nhiều yêu cầu cùng lúc mà không ảnh hưởng đến hiệu suất. - Ngôn ngữ JavaScript dễ học: Sử dụng JavaScript, một ngôn ngữ lập trình dễ học và phổ biến. - Chia sẻ code ở cả phía Server và Client: Khả năng chia sẻ mã nguồn giữa phía Server và Client. - Node Package Manager (NPM) và module Node phát triển mạnh mẽ: Hệ thống quản lí gói NPM và module Node ngày càng phát triển mạnh mẽ, hỗ trợ quá trình phát triển.
- Xử lí file lớn bằng Stream: Có khả năng xử lí các file có kích thước lớn thông qua việc sử dụng stream. Nhược điểm: - Hạn chế khả năng mở rộng: Nodejs có hạn chế trong khả năng mở rộng, không tận dụng được lợi thế của các phần cứng server đa lõi hiện đại. - Nodejs gặp khó khăn khi thao tác với các cơ sử dữ liệu quan hệ. - Callback lồng nhau nhiều: Mỗi callback thường đi kèm với nhiều callback lồng nhau khác, làm tăng độ phức tạp của mã nguồn.
- Yêu cầu kiến thức tốt về JavaScript: Sử dụng Nodejs đòi hỏi nhà phát triển phải có kiến thức sâu rộng về JavaScript. - Nodejs không thích hợp cho các nhiệm vụ yêu cầu nhiều CPU. Khái niệm MongoDB 23 MongoDB là một dạng phần mềm cơ sở dữ liệu sử dụng mã nguồn mở NoSQL. Nó có thể hỗ trợ trên nhiều nền tảng khác nhau và được thiết kế với mục đích hướng đến đối tượng.
MongoDB hoạt động dựa vào các khái niệm Collection và Document. Đồng thời, nó có hiệu suất cao cùng với tính khả dụng tốt và dễ dàng mở rộng. Các Collection trong MongoDB có cấu trúc cực kỳ linh hoạt. Điều này cho phép dữ liệu không cần thiết phải tuân theo bất kỳ một dạng cấu trúc nào.
Vì thế, MongoDB có thể lưu trữ những dữ liệu có cấu trúc đa dạng và phức tạp. Dữ liệu trong MongoDB được lưu bằng định dạng kiểu JSON. Là một môi trường chạy mã nguồn mở và đa nền tảng, Node.js thường được sử dụng để phát triển các ứng dụng mạng.js cung cấp một thư viện đa dạng bao gồm nhiều mô- đun JavaScript khác nhau, giúp đơn giản hóa quá trình phát triển ứng dụng web sử dụng Node.js ở mức độ lớn. Các tính năng nổi bật của MongoDB Mongodb chính là một database hướng tài liệu, nên khi đó mọi dữ liệu sẽ được lưu trữ trong document theo kiểu JSON thay vì lưu theo dạng bảng như CSDL quan hệ nên việc truy cập vấn sẽ nhanh chóng hơn.
Với các CSDL quan hệ thì chúng ta sẽ có khái niệm bảng, khi đó các cơ sở dữ liệu quan hệ sẽ sử dụng các bảng để có thể lưu trữ dữ liệu, còn với Mongodb thì bạn cần phải sử dụng khái niệm collection thay cho bảng. 24 Mongodb chính là một hệ quản trị cơ sở dữ liệu mà trong đó mã nguồn mở là CSDL thường thuộc NoSql và được hàng triệu người sử dụng. So với RDBMS thì trong Mongodb collection thường sẽ ứng với table, còn document sẽ tương ứng với row. MongoDB sẽ sử dụng các document để thay cho row trong RDBMS.
Với các collection có trong Mongodb thường sẽ được cấu trúc rất linh hoạt nên nó cho phép các dữ liệu được lưu trữ mà không cần phải tuân theo bất kỳ một cấu trúc nhất định nào. Các thông tin có liên quan đều sẽ được lưu trữ cùng với nhau để người dùng có thể truy cập truy vấn nhanh hơn thông qua các ngôn ngữ truy vấn Mongodb. Ưu điểm của MongDB Linh hoạt trong lưu trữ các kích cỡ dữ liệu khác nhau. Nhờ chúng được lưu dưới dạng JSON nên bạn thoải mái chèn bất kỳ thông tin nào tùy theo nhu cầu sử dụng.
Tiết kiệm thời gian trong việc kiểm tra sự tương thích về cấu trúc khi thêm, xóa hoặc cập nhật dữ liệu. Nhờ MongoDB không có sự ràng buộc trong một khuôn khổ, quy tắc nhất định nào. Dễ dàng mở rộng hệ thống thông qua việc thêm node vào cluster. Cụm các node này đóng vai trò như thư viện chứa các dữ liệu giao tiếp với nhau.