CHƯƠNG 1: CƠ SỞ LÝ THUYẾT 1. TÌM HIỂU CÔNG NGHỆ 1. Giới thiệu Flutter Flutter là một bộ công cụ phát triển giao diện người dùng mã nguồn mở do Google phát triển. Được sử dụng để phát triển các ứng dụng cho nhiều nền tảng khác nhau bao gồm Android, iOS, Windows, Mac, Linux, Google Fuchsia và web từ một mã nguồn duy nhất.
Các đặc điểm nổi bật của Flutter bao gồm: + Hiệu suất cao: Flutter sử dụng engine đồ họa hiệu suất cao và biên dịch mã nguồn sang mã máy (native code) giúp ứng dụng chạy nhanh chóng và mượt mà. + Tùy biến linh hoạt: Với Flutter, bạn có thể dễ dàng tạo ra các giao diện tùy biến phức tạp nhờ vào hệ thống widget phong phú và khả năng kết hợp chúng một cách linh hoạt. + Thời gian phát triển nhanh chóng: Tính năng Hot Reload của Flutter giúp nhà phát triển có thể thấy ngay lập tức các thay đổi trong mã nguồn mà không cần phải khởi động lại ứng dụng, tiết kiệm thời gian đáng kể. Các thành phần trong Flutter Dart Programming Language: Flutter sử dụng ngôn ngữ lập trình Dart, cũng được phát triển bởi Google.
Dart được thiết kế để dễ học và có hiệu suất cao, hỗ trợ cả biên dịch Just-In-Time (JIT) và Ahead-Of-Time (AOT). Widget: Mọi thứ trong Flutter là một widget. Từ layout đến các yếu tố giao diện người dùng đều được xây dựng dưới dạng widget, giúp việc tái sử dụng và tùy biến giao diện trở nên dễ dàng. 19 Flutter Engine: Flutter có một engine đồ họa hiệu suất cao, cung cấp các API cho đồ họa 2D, xử lý văn bản, và khả năng kết nối với hệ thống gốc của từng nền tảng (platform- specific APIs).
Bloc - Cubit Bloc (Business Logic Component): + Bloc là một thư viện quản lý trạng thái phổ biến trong Flutter, giúp tách biệt logic xử lý ra khỏi giao diện người dùng. + Bloc tuân theo mô hình lập trình Reactive Programming, nơi dữ liệu và sự kiện được quản lý dưới dạng các stream (luồng). + Các thành phần chính của Bloc: Event: Định nghĩa các hành động mà người dùng có thể thực hiện, ví dụ như nhấn nút, kéo xuống để làm mới, v. State: Đại diện cho trạng thái hiện tại của giao diện người dùng.
Bloc: Nhận các event và chuyển đổi chúng thành các state mới thông qua các phương thức xử lý logic. + Bloc giúp quản lý trạng thái phức tạp của ứng dụng một cách rõ ràng và dễ dàng bảo trì. Cubit: + Cubit là một thư viện quản lý trạng thái đơn giản hơn Bloc nhưng vẫn tuân theo các nguyên tắc tương tự. + Cubit không sử dụng event mà thay vào đó cung cấp các phương thức để trực tiếp thay đổi state.
+ Các thành phần chính của Cubit: State: Đại diện cho trạng thái hiện tại của giao diện người dùng. Cubit: Chứa logic để thay đổi state và cung cấp các phương thức để cập nhật state dựa trên hành động của người dùng. + Cubit thích hợp cho các ứng dụng có trạng thái đơn giản hơn, nơi việc quản lý event không cần thiết phức tạp. Giới thiệu Node.js là một môi trường runtime mã nguồn mở, đa nền tảng, cho phép thực thi mã JavaScript ở phía server.
Được xây dựng trên V8 JavaScript engine của Google, Node.js cung cấp hiệu suất cao và khả năng mở rộng tuyệt vời. Các đặc điểm nổi bật của Node.js bao gồm: + I/O không đồng bộ và event-driven: Node.js sử dụng mô hình I/O không đồng bộ và event-driven, giúp xử lý hàng nghìn kết nối đồng thời một cách hiệu quả mà không làm tắc nghẽn hệ thống. + Single-threaded: Node.js hoạt động trên một luồng đơn (single-threaded) nhưng có khả năng xử lý nhiều yêu cầu đồng thời thông qua event loop. + NPM (Node Package Manager): NPM là hệ thống quản lý gói đi kèm với Node.js, cung cấp hàng ngàn thư viện và module giúp phát triển ứng dụng nhanh chóng và hiệu quả.
Kiến trúc và các thành phần chính của Node.js Event Loop: Event Loop là thành phần quan trọng trong Node.js, giúp quản lý và xử lý các sự kiện không đồng bộ. Nó cho phép Node.js xử lý nhiều yêu cầu cùng lúc mà không cần phải tạo ra nhiều luồng.js sử dụng hệ thống module để tổ chức và tái sử dụng mã nguồn. Các module có thể được import và export dễ dàng, giúp mã nguồn trở nên rõ ràng và dễ bảo trì. Middleware: Trong các ứng dụng web sử dụng Node.js, middleware là các hàm trung gian xử lý yêu cầu HTTP.
Middleware giúp quản lý các nhiệm vụ như xác thực, ghi log, và xử lý lỗi. Ứng dụng và sử dụng Node.js Ứng dụng Web: Node.js được sử dụng rộng rãi để phát triển các ứng dụng web nhờ vào hiệu suất cao và khả năng xử lý nhiều yêu cầu đồng thời. API Backend: Node.js là lựa chọn phổ biến để xây dựng các API backend do khả năng mở rộng và tính năng xử lý không đồng bộ của nó.js thích hợp cho kiến trúc microservices, nơi các dịch vụ nhỏ, độc lập có thể giao tiếp với nhau thông qua các API.js Giới thiệu: Express.js, hay đơn giản là Express, là một framework web nhẹ và mạnh mẽ cho Node. Nó cung cấp một bộ công cụ mạnh mẽ để xây dựng các ứng dụng web và API.
Đặc điểm nổi bật: + Tối giản và linh hoạt: Express có thiết kế tối giản, cho phép nhà phát triển tự do quyết định cách tổ chức mã nguồn và lựa chọn các middleware cần thiết. + Middleware: Hệ thống middleware của Express rất mạnh mẽ, giúp xử lý yêu cầu và phản hồi HTTP dễ dàng thông qua các hàm trung gian. + Routing: Express cung cấp hệ thống routing linh hoạt, cho phép định nghĩa các đường dẫn và phương thức HTTP (GET, POST, PUT, DELETE) một cách dễ dàng. + Khả năng mở rộng: Express dễ dàng tích hợp với nhiều module và thư viện khác từ NPM, giúp mở rộng chức năng và tính năng của ứng dụng.
Giới thiệu React.js là một thư viện JavaScript mã nguồn mở do Facebook phát triển, được sử dụng để xây dựng các giao diện người dùng (UI). React giúp phát triển các ứng dụng web động và tương tác thông qua việc quản lý hiệu quả trạng thái (state) và DOM (Document Object Model). Các đặc điểm nổi bật của React.js bao gồm: + Component-Based: React sử dụng kiến trúc dựa trên component, cho phép nhà phát triển tạo ra các thành phần UI tái sử dụng và dễ quản lý. + Virtual DOM: React sử dụng Virtual DOM để cải thiện hiệu suất.
Khi có thay đổi trong UI, Virtual DOM sẽ tính toán sự khác biệt và cập nhật DOM thực tế một cách tối ưu. + JSX: React sử dụng JSX, một cú pháp mở rộng của JavaScript, cho phép viết code HTML trực tiếp trong JavaScript, làm cho mã nguồn trở nên rõ ràng và dễ hiểu. Kiến trúc và các thành phần chính của React.js Components: Thành phần cơ bản của React là components. Các components có thể là stateful (có trạng thái) hoặc stateless (không có trạng thái) và có thể được lồng vào nhau để tạo ra các giao diện phức tạp.
State and Props: State là dữ liệu cục bộ của component, trong khi props là dữ liệu truyền từ component cha xuống component con. State có thể thay đổi theo thời gian, còn props là không thay đổi (immutable). Lifecycle Methods: React cung cấp các phương thức vòng đời để quản lý các giai đoạn khác nhau của một component, từ khi được tạo ra đến khi bị hủy bỏ. Hooks: Hooks là các hàm đặc biệt trong React cho phép sử dụng state và các tính năng khác của React trong functional components.
Một số hooks phổ biến gồm useState, useEffect, và useContext. Các thư viện và công cụ hỗ trợ React.js Ant Design (antd): Là một thư viện component UI toàn diện, cung cấp các thành phần giao diện phong phú và chuyên nghiệp, giúp phát triển ứng dụng một cách nhanh chóng và dễ dàng. Redux: Sử dụng thư viện @reduxjs/toolkit, Redux cung cấp các công cụ để quản lý trạng thái của ứng dụng một cách hiệu quả và dễ dàng. React Router: react-router-dom giúp quản lý điều hướng và routing trong các ứng dụng React, hỗ trợ tạo ra các đường dẫn URL động và nested routing.
Axios: Thư viện axios giúp thực hiện các yêu cầu HTTP, dễ dàng tương tác với các API từ phía client. React Testing Library: Các thư viện @testing-library/react và @testing-library/jest- dom hỗ trợ việc kiểm thử các component React một cách dễ dàng và trực quan. React Toastify: Thư viện react-toastify giúp tạo thông báo (toast) đẹp mắt và dễ sử dụng trong ứng dụng React. NProgress: Thư viện nprogress giúp hiển thị tiến trình tải (loading) của các yêu cầu HTTP, tạo ra trải nghiệm người dùng tốt hơn.
Flask Flask là một micro web framework viết bằng Python. Flask được thiết kế để dễ học và sử dụng, đồng thời cung cấp sự linh hoạt để mở rộng cho các ứng dụng web phức tạp. Các đặc điểm nổi bật của Flask bao gồm: + Microframework: Flask nhẹ và đơn giản, không có quá nhiều thành phần tích hợp sẵn, giúp nhà phát triển tự do lựa chọn các thành phần bổ sung theo nhu cầu. + Modular and Extensible: Flask có cấu trúc mô-đun, dễ dàng mở rộng thông qua các extension (mở rộng) để bổ sung các chức năng như authentication, ORM (Object Relational Mapper), form validation, và nhiều hơn nữa.
+ Werkzeug and Jinja2: Flask sử dụng Werkzeug làm bộ công cụ WSGI (Web Server Gateway Interface) và Jinja2 làm hệ thống template, giúp xây dựng các ứng dụng web mạnh mẽ và dễ dàng. SQL Server Microsoft SQL Server là một hệ quản trị cơ sở dữ liệu quan hệ (RDBMS) do Microsoft phát triển. SQL Server được thiết kế để lưu trữ và quản lý dữ liệu đồng thời hỗ trợ các yêu cầu xử lý giao dịch, phân tích và báo cáo dữ liệu. Các đặc điểm nổi bật của SQL Server bao gồm: + Relational Database Management System (RDBMS): SQL Server sử dụng mô hình quan hệ để lưu trữ dữ liệu dưới dạng các bảng, cho phép dễ dàng tổ chức và truy vấn dữ liệu.
+ Transact-SQL (T-SQL): SQL Server sử dụng ngôn ngữ truy vấn T-SQL, một biến thể mở rộng của SQL, cung cấp các khả năng lập trình nâng cao cho việc truy vấn và quản lý dữ liệu. + Security: SQL Server cung cấp các tính năng bảo mật mạnh mẽ như xác thực người dùng, mã hóa dữ liệu và quản lý quyền truy cập. Ứng dụng và sử dụng SQL Server: + Transaction Processing: SQL Server thường được sử dụng để quản lý các giao dịch trong các hệ thống quản lý doanh nghiệp như ERP, CRM và các ứng dụng tài chính. 24 + Business Intelligence: SQL Server hỗ trợ các công cụ BI để phân tích dữ liệu, tạo báo cáo và cung cấp các thông tin kinh doanh quan trọng.