Lược sử về Redux
2013 Facebook đã trở thành 1 ông kẹ trong làng công nghệ. Và đương nhiên không thể nhìn google bá đạo hạt gạo mãi được. Facebook cho rằng rằng AngularJS của Google chậm chạm và nặng nề, vì vậy năm này họ giới thiệu ReactJS tới với cộng đồng các lập trình viên.
Nhưng có tiếng nhưng miếng chưa co lắm vì ReactJS chỉ là một thư viện để tạo ra các Component và render các Component này lên giao diện, ReactJS không có khả năng quản lý trạng thái của ứng dụng. Đương nhiên Facebook ko làm chỉ cho có vì sau đó không lâu Facebook tiếp tục giới thiệu một thư viện Javascript với tên là Flux giúp quản lý trạng thái của ứng dụng, và nó là một thư viện được ra đời để hỗ trợ React.
Dân tình bắt đầu đổ xô vào tu luyện Flux nhưng Flux ko phải dễ ăn đối với 1 số người Flux giống như gân gà vậy.
Đúng là ở đời hơn thua nhau cái đầu trong lúc mọi người còn loay hoay với FLux thì có người đã thành chứng quả. Khi nghiên cứu song song Flux cùng ELM chàng thư sinh Dan Abramov đã tìm thấy mặt trời chân lý của mình. Ảnh hưởng bởi kiến trúc ELM đồng thời cho rằng Flux quá phức tạp tháng 5/2015 Dan Abramov tự sáng tạo thư viện mới có tên Redux dựa trên kiến trúc của ELM và loại bỏ sự phức tạp của Flux.
Redux js là một thư viện Javascript giúp tạo ra thành một lớp quản lý trạng thái của ứng dụng. Được dựa trên nền tảng tư tưởng của ngôn ngữ Elm kiến trúc Flux do Facebook giới thiệu, do vậy Redux thường là bộ đôi kết hợp hoàn hảo với React (ReactJs và React Native).
Sau khi ra đời Redux đã gây ra một tiếng vang lớn, và ngay lập tức gây được sự chú ý của cộng đồng React và ngay cả Facebook cũng mời Dan Abramov về làm việc. Hiện nay cả Redux và Flux đang tồn tại song song, nhưng Redux đang được ưa chuộng và sử dụng rộng rãi hơn cả.
Về mặt người dùng cuối (enduser) khi họ tương tác trên giao diện của ứng dụng họ chỉ quan tâm tới kết quả của hành động đó. Nhưng thực tế đã có rất nhiều quá trình xẩy ra. OK, bây giờ chúng ta sẽ phân tích kiến trúc của Flux và Redux để hiểu hơn về các quá trình này.
Kiến trúc của Flux được giới thiệu lần đầu tiên bởi Bill Fisher và Jing Chen tại hội nghị Facebook F8 năm 2014. Ý tưởng này tái định nghĩa lại mô hình MVVM ( Model View - View Model) vốn đã được sử dụng rộng rãi trước đó với khái niệm "dòng chảy dữ liệu đơn hướng" ( unidirectional data flow).
Các hành động (actions) và các sự kiện (events) trong Flux sẽ đi qua một "mạch khép kín" có dạng như sau:
USER INTERFACE — action —> DISPATCHER — action —> STORES — notify changes —> USER INTERFACE
Dưới đây là hình ảnh minh họa kiến trúc tổng quát của FLUX:
Khi người dùng thực hiện một hành động trên giao diện (Chẳng hạn nhấn chuột). Một đối tượng Action sẽ được tạo ra, đây là một đối tượng thông thường nó lưu trữ các thông tin như: Kiểu hành động, diễn ra tại đâu, lúc nào, tọa độ (ứng với sự kiện chuột), thay đổi state nào,..
// Action object example:
{
type: 'ADD_TODO',
payload: {
title: 'Do something.',
priority: 'HIGH',
completed: false
}
}
Các phần trong kiến trúc của FLUX:
Các đối tượng Action sẽ được tiếp nhận và xử lý trực tiếp bởi STORE.
Dưới đây là hình ảnh minh họa kiến trúc của REDUX:
Các phần trong kiến trúc của REDUX:
Unpublished comment
Viết câu trả lời