Tìm hiểu React JS và ứng dụng trong tư vấn chứng khoán

MỤC LỤC

Framework trỗi dậy

- Thời kỳ này chứng kiến sự trỗi dậy mạnh mẽ của các framework frontend, giúp nhà phát triển xây dựng ứng dụng web một cách hiệu quả và nhanh chóng. Các framework như Angular, React, và Vue.js đã trở thành những công cụ quan trọng, mang lại cấu trúc tổ chức mã nguồn, tái sử dụng mã, và tối ưu hóa hiệu suất.

Công nghệ frontend 1. Các công cụ

Các ngôn ngữ lập trình và framwork

Framework cũng đóng vai trò quan trọng trong việc thúc đẩy xu hướng phát triển web hiện đại và chuẩn mực hóa quy trình phát triển.

Các frontend framework 1. Định nghĩa

Các xu hướng công nghệ phổ biến

    - Micro Front End Architecture là một kiến trúc phát triển ứng dụng mà frontend được chia thành các thành phần độc lập, có thể được phát triển, triển khai và quản lý một cách độc lập. - Mobile-First Approach là chiến lược phát triển ứng dụng bắt đầu từ việc thiết kế và phát triển trước cho thiết bị di động, sau đó mở rộng để phù hợp với các thiết bị lớn.

    CÁC KIẾN TRÚC PHỔ BIẾN 2.1. MVC

    • MVVM

      - Các ngôn ngữ và framework này đều tận dụng mô hình MVC để tạo ra mã nguồn dễ bảo trì, tái sử dụng, và mở rộng trong quá trình phát triển ứng dụng web. + React (JavaScript/TypeScript): React là một thư viện JavaScript phổ biến, không phải là một framework, nhưng nó thường được sử dụng để xây dựng ứng dụng web sử dụng kiến trúc MVVM thông qua các thư viện và công cụ như Redux.

      CÁC VẤN ĐỀ CƠ BẢN CỦA FRONTEND (REACT) 3.1. Hiển thị UI

      UI Rendering trong React - Quy trình UI Rendering trong React

      + Đồng bộ và linh hoạt: Virtual DOM giúp React duy trì một bản sao nhanh chóng của trạng thái UI, giúp duyệt qua và cập nhật các thay đổi một cách linh hoạt. + ReactDOM.render(): Chuyển đổi React elements thành cây Virtual DOM và cập nhật DOM thực sự dựa trên sự khác biệt giữa cây cũ và mới.

      Tương tác UI

        + Context API: Context API là một phần của React được thiết kế để giải quyết vấn đề truyền dữ liệu giữa các thành phần mà không cần thông qua props ở mức sâu trong cây component. Điều này giúp tránh tình trạng "prop drilling" (truyền props qua nhiều cấp độ) và làm cho việc quản lý trạng thái và dữ liệu toàn cục trở nên dễ dàng hơn.

        Hình 3.1: Xử lý sự kiện `onClick` trong React
        Hình 3.1: Xử lý sự kiện `onClick` trong React

        Form Validation 1. Vấn đề

          - Trong React, bạn cú thể sử dụng cỏc Hooks như `useState` để theo dừi state của form và `useEffect` để kiểm tra validation khi dữ liệu thay đổi. - Các trang web hay ứng dụng ngày này đã phát triển nhiều, và có khả năng thay đổi động dựa trên dữ liệu hoặc yêu cầu cụ thể của ứng dụng. Dynamic form cho phép chúng ta tạo và quản lý các trường nhập liệu một cách linh hoạt, tùy thuộc vào nhu cầu cụ thể của người dùng hoặc hệ thống.

          - BEEKAI là một công ty chuyên cung cấp giải pháp và dịch vụ trong lĩnh vực công nghệ thông tin và phần mềm. Dynamic form được xây dựng dựa trên dữ liệu được đặc tả, giúp dễ dàng thay đổi cấu trúc form theo yêu cầu của khách hàng. ● API Integration: BEEKAI tích hợp dynamic form với các API để đồng bộ và lấy dữ liệu từ các nguồn khác nhau.

          ● User-Friendly Interface: Giao diện người dùng của dynamic form được BEEKAI thiết kế một cách thân thiện và dễ sử dụng.

          Hình 3.8: Ví dụ về Form Validation với hook
          Hình 3.8: Ví dụ về Form Validation với hook

          Lịch sử phát triển

          ● 2018 => Nay: React phát triển thêm nhiều tính năng như hooks, một cách mới để sử dụng trạng thái và vòng đời trong functional components. Nó giúp tái sử dụng logic giữa các component mà không cần chuyển đổi thành các class components. Concurrent Mode, một tính năng cung cấp hiệu suất cao hơn và trải nghiệm người dùng mượt mà hơn, được công bố.

          Ngoài ra, phát triển thêm Stable Concurrent Mode giúp cải tiến về API và khả năng tương thích ngược. Concurrent Mode chính thức trở thành một tính năng ổn định, mang lại hiệu suất và trải nghiệm người dùng tốt hơn. Và cùng với nhiều tính năng mới như Suspense for Data Fetching, Transition API, và nâng cao về hiệu suất.

          Phiên bản này tiếp tục mang lại những cải tiến quan trọng cho trải nghiệm phát triển và người dùng.

          Kiến trúc hệ thống React

            ● So Sánh với DOM Thực Tế: Thay vì thực hiện các thao tác trực tiếp trên DOM (Document Object Model) thực tế, React sử dụng một bản sao ảo của DOM để thực hiện các thao tác cập nhật. ● Làm Tăng Độ Reactivity: Khi trạng thái của ứng dụng thay đổi, React sử dụng Virtual DOM để so sánh trạng thái mới với trạng thái cũ và chỉ cập nhật những phần thay đổi. - Diffing Algorithm: Khi có sự thay đổi trong trạng thái (state) của các thành phần, React sử dụng thuật toán "diffing" để so sánh Virtual DOM hiện tại và trước đó để xác định những phần cần cập nhật.

            - Reconciliation là một khái niệm quan trọng trong React, đề cập đến quá trình so sánh và đồng bộ hóa giữa cây Virtual DOM hiện tại và cây Virtual DOM trước đó để xác định những thay đổi cần áp dụng lên DOM thực tế. ● Mặc dù React có khả năng tối ưu hóa tự động thông qua Reconciliation, nhưng có thể tối ưu hóa thêm bằng cách sử dụng các phương tiện như shouldComponentUpdate (đối với class components) hoặc React.memo (đối với functional components) để kiểm soát quá trình cập nhật. - Lifecycle Methods: React Class Components có một số phương thức "Lifecycle Methods" mà bạn có thể sử dụng để thực hiện các hành động tại các giai đoạn khác nhau trong vòng đời của một component.

            - Hooks: React Hooks là một tính năng giới thiệu từ phiên bản React 16.8, cho phép bạn sử dụng các tính năng của state và lifecycle trong các functional components.

            Hình 4.1: Ví dụ về UI Component
            Hình 4.1: Ví dụ về UI Component

            Ưu nhược điểm 1. Ưu điểm

              - Truyền Tham Số và Sử Dụng Props: Để truyền tham số và sử dụng props trong React Router, bạn có thể sử dụng `:parameter` trong định nghĩa route. - Redirect và NotFound: Sử dụng Redirect để chuyển hướng và Route cuối cùng để xử lý trường hợp không có route nào khớp. - Phải Sử Dụng Bộ Xử Lý Externals: React không đi kèm với state management hay routing cơ bản.

              Bạn cần sử dụng thư viện hoặc framework bên ngoài như Redux hoặc React Router. - Phải Thao Tác Trực Tiếp với DOM: Trong một số trường hợp, việc phải thao tác trực tiếp với DOM (như manipulations qua refs) có thể tạo ra mã nguồn khó bảo trì và quản lý. - Size Của Ứng Dụng: Các ứng dụng React có thể có size lớn hơn so với một số thư viện và framework khác, đặc biệt là khi sử dụng nhiều tính năng và thư viện bổ sung.

              - Bản Đồ Học: Có sự biến động liên tục trong các phiên bản mới và cập nhật, có thể tạo khó khăn cho việc duy trì các dự án lớn.

              Hiện trạng, tiềm năng - Hiện trạng

              ● Cộng Đồng Lớn và Hỗ Trợ Tốt: Có một cộng đồng lớn, tích cực và có khả năng giải quyết vấn đề. ● Phát Triển Ứng Dụng Một Cách Nhanh Chóng: React giúp tăng tốc độ phát triển với JSX, Virtual DOM, và mô hình thành phần. ● Cộng Đồng Tiếp Tục Phát Triển: Cộng đồng React tiếp tục đổi mới và phát triển với các phiên bản mới, cung cấp những tính năng và công cụ tiện ích.

              ● Chất Lượng Hiệu Suất Cao: React không ngừng cải tiến hiệu suất và tối ưu hóa, giúp ứng dụng chạy mượt mà và nhanh chóng. ● Hỗ Trợ Khả Năng Đa Nền Tảng: Với React Native, khả năng chia sẻ mã nguồn giữa web và di động mở ra khả năng phát triển đa nền tảng. ● Phát Triển Cộng Đồng Công Nghiệp: React đã trở thành một công nghệ chính trong ngành công nghiệp và sự hỗ trợ liên tục từ các công ty và tổ chức lớn.

              ● Những Thay Đổi Tiềm Năng Trong Tương Lai: Có những đề xuất và dự án nghiên cứu như Concurrent Mode, React Server Components, giúp tối ưu hóa trải nghiệm phát triển và hiệu suất ứng dụng trong tương lai.

              SO SÁNH REACT VỚI ANGULAR 5.1. Ngôn ngữ lập trình

                ● Công Cụ Dòng Lệnh: Angular CLI giúp tự động hóa quy trình phát triển, testing, và deployment, giúp tăng năng suất và giảm độ phức tạp. - React và Angular là hai thư viện/framework phổ biến cho phát triển ứng dụng web, và cả hai đều có các công cụ hỗ trợ tự động hóa quy trình build và release. ● Create React App (CRA): Đây là một công cụ được tạo ra bởi cộng đồng React để tạo ra dự án React một cách nhanh chóng và dễ dàng.

                Nó giúp tổ chức và đóng gói mã nguồn, tối ưu hóa hình ảnh và tệp tin, và biên dịch mã nguồn React thành JavaScript hiểu được trên nhiều trình duyệt. ● Tích hợp với CI/CD: CRA có thể tích hợp dễ dàng với các công cụ CI/CD như Jenkins, Travis CI, hoặc GitHub Actions để tự động hóa quy trình release. ● Angular CLI: Angular có một công cụ gọi là Angular CLI (Command Line Interface), giúp tự động hóa việc tạo, quản lý và triển khai dự án Angular.

                ● Tích hợp với CI/CD: Angular CLI hỗ trợ tích hợp với nhiều công cụ CI/CD thông dụng, giúp tự động hóa việc triển khai và cập nhật ứng dụng Angular.

                Xây dựng ứng dụng tư vấn chứng khoán