Hiểu mô hình thông lượng


12

Tôi thực sự đang nghiên cứu mô hình thông lượng và có một cái gì đó mà tôi không thể hiểu liên quan đến các cửa hàng .

Họ chính xác là gì?

Tôi đã đọc nhiều bài viết, và dường như nó liên quan đến tên miền.

Có nghĩa là đây là phần "trừu tượng" liên quan đến các cuộc gọi api hoặc các cuộc gọi phụ trợ?

Nó không rõ ràng cho tôi.

Chỉnh sửa: Nó có thể giống như các nhà máy góc cạnh? Tìm nạp dữ liệu từ xa, thực hiện tác vụ kinh doanh hoặc lưu trữ một số trạng thái ứng dụng (ví dụ người dùng hiện tại được kết nối)?


1
Một liên kết đến chính xác những gì bạn đang nói về sẽ hữu ích. Bạn có nghĩa là "mô hình thông lượng" này? fluxxor.com/what-is-flux.html
DougM


Flux không có gì khác là mẫu xuất bản / đăng ký với một ràng buộc là tất cả dữ liệu phải đi qua bộ điều phối trước. Nó đảm bảo dữ liệu không bị ngược (và gây nhầm lẫn). Những thứ như "Cửa hàng", "Hành động", v.v ... chỉ là một cách khác để nói Thành phần của hệ thống và Dữ liệu được truyền qua.
kiwicomb123

Câu trả lời:


23

Ok để tôi giải thích cho bạn từng bước

1 Thông lượng là gì?

  • Một mô hình
  • Công văn tập trung
  • Luồng dữ liệu đơn hướng
  • Danh sách mục

Họ gọi nó là Flux vì một lý do quá.

Thông lượng triển khai

  • Thông lượng của Facebook
  • Alt
  • Trào ngược
  • Flummox
  • Hạt nhân
  • Thông lượng

nhập mô tả hình ảnh ở đây

Trò chuyện với thông lượng

React : Hey Action, ai đó đã nhấp vào nút Save Save Course này.

Hành động : Cảm ơn Phản ứng! Tôi đã đăng ký một người tạo hành động với người điều phối, vì vậy người điều phối nên chú ý đến việc thông báo cho tất cả các cửa hàng quan tâm.

Người điều phối : Hãy để tôi xem ai quan tâm đến một khóa học đang được cứu. Ah! Có vẻ như Cửa hàng đã đăng ký gọi lại với tôi, vì vậy tôi sẽ cho cô ấy biết.

Cửa hàng : Chào người điều phối! Cảm ơn các cập nhật! Tôi sẽ cập nhật dữ liệu của mình với tải trọng bạn đã gửi. Sau đó, tôi sẽ phát ra một sự kiện cho các thành phần React quan tâm.

Phản ứng : Ôi! Dữ liệu mới sáng bóng từ cửa hàng! Tôi sẽ cập nhật giao diện người dùng để phản ánh điều này!


API thông lượng


đăng ký (gọi lại chức năng) - Người điều phối Hey Hey, chạy cho tôi khi hành động xảy ra. -Cửa hàng"

unregister (chuỗi id) - Người điều phối Hey Hey, đừng lo lắng về hành động này. -Cửa hàng"

WaitFor (mảng id) - Cập nhật cửa hàng này trước. -Cửa hàng"

công văn (tải trọng đối tượng) - người điều phối Hey Hey, nói với các cửa hàng về hành động này. -Hoạt động"

isDispatching () - Hiện tại tôi đang bận gửi các cuộc gọi lại.

Vì vậy, câu hỏi đặt ra trong tâm trí của chúng tôi là

Vì vậy, Flux là một mô hình xuất bản-đăng ký?

Không hẳn.

Khác nhau theo hai cách:

1.Mọi tải trọng được gửi đến tất cả các cuộc gọi lại đã đăng ký.

2.Callbacks có thể chờ đợi các cuộc gọi lại khác

Tóm lược

Flux là một mẫu cho các luồng dữ liệu đơn hướng Các hành động đóng gói các sự kiện Dispatcher là một trung tâm trung tâm giữ các cuộc gọi lại Các cửa hàng giữ trạng thái ứng dụng Nhiều triển khai


Vấn đề đầu tiên của tôi là trạng thái cho phép ứng dụng có dữ liệu khác nhau của các thực thể api từ xa: - /
mfrachet

bạn có ý nghĩa gì bởi nhà nước cho phép? bất cứ nơi nào phát ra sự thay đổi được gọi là nó sẽ được gọi là React View và một lần nữa được gọi là phương thức thay đổi trạng thái
Dhaval Patel

Thừa nhận rằng tôi xây dựng một ứng dụng với thông lượng. Tôi đang xử lý một API và sau đó tôi lưu dữ liệu bên trong các cửa hàng của mình. Điều gì xảy ra nếu người dùng sửa đổi dữ liệu từ xa? Tôi sẽ có một sự khác biệt giữa cả máy khách và máy chủ
mfrachet

bây giờ tôi có thể tìm thấy tại sao. Nếu tất cả người điều phối và cửa hàng sẽ làm là chuyển tiếp để xem, thì tại sao không thể cập nhật hành động xem trực tiếp. Tại sao có người trung gian
Muhammad Umer

@MuhammadUmer: Dispatcher là một ứng dụng và cửa hàng dựa trên thành phần trong ứng dụng để loại bỏ những người trung gian dư thừa đã được giới thiệu
Dhaval Patel

1

Tra cứu một ví dụ đơn giản ( https://github.com/facebook/flux/tree/master/examples/flux-todomvc/ ), các cửa hàng của nhà quản lý trạng thái ứng dụng cho một tên miền cụ thể trong ứng dụng. dữ liệu về trạng thái của một khía cạnh của ứng dụng và tất cả các mã để thay đổi nó. Bất cứ khi nào có bản cập nhật mới từ Bộ điều phối, tất cả các Cửa hàng đều thấy nó, họ quyết định cách cập nhật dữ liệu của họ để phản hồi và sau đó họ thông báo cho Chế độ xem rằng dữ liệu đã thay đổi. Trong các ví dụ, Cửa hàng chứa những thứ như Danh sách chủ đề không nhìn thấy liệt kê (trong đó Người điều phối thông báo cho họ rằng có một tin nhắn mới đã đến hoặc một tin nhắn cũ đã được đọc và Chế độ xem hiển thị các chuỗi tin nhắn cho người dùng) và thời gian phát lại hiện tại và tiểu bang."

Về mặt kỹ thuật hơn: chúng là lớp trung gian của khung đăng ký các cuộc gọi lại với Bộ điều phối để nhận các bản cập nhật, sau đó thông báo cho Chế độ xem khi trạng thái của dữ liệu thay đổi. (Các chế độ xem sau đó có thể gửi hành động trở lại cho Người điều phối.) Có một giao diện trừu tượng mà họ triển khai, trong đó mỗi Cửa hàng đăng ký một cuộc gọi lại với Người điều phối và phát các sự kiện đến Chế độ xem, nhưng mỗi Cửa hàng dường như thể hiện một tên miền cụ thể. (Có mẫu nào không?)


0

Cửa hàng là khu vực của mã lưu trữ trạng thái ứng dụng và logic phức tạp. Một lý do cho chúng là nhiều chế độ xem có thể sẽ sử dụng cùng một dữ liệu, nhưng hiển thị chúng theo một cách khác hoặc hiển thị một số nhưng không phải tất cả dữ liệu cho một tên miền cụ thể. Ví dụ: người dùng đăng nhập và bạn nhận được tên, họ, email, ảnh, thị trấn, số địa chỉ, số điện thoại, v.v. Thông tin này được hiển thị trên các chế độ xem riêng biệt. Thay vì sao chép dữ liệu qua các chế độ xem, chúng tôi có thể sử dụng một Cửa hàng có tên UserStore lưu trữ dữ liệu cho người dùng. Điều này giúp đơn giản hóa hệ thống bằng cách đưa ra "một nơi để thực hiện thay đổi" bất cứ khi nào logic hoặc dữ liệu được lưu trữ phải được thay đổi. Có rất nhiều lý do khác để sử dụng Cửa hàng, tuy nhiên đó là lý do rõ ràng nhất tôi nghĩ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.