2016-12-23 18 views
7

Câu chuyện sau: Hiện tại công ty của tôi có một "cổng" nơi nhiều ứng dụng nội bộ khác nhau được phát triển độc lập và sau đó được dán vào trang web. Có rất nhiều trò chuyện giữa các khung (thường là kiểm tra trạng thái hoặc thiết lập một số trạng thái cho các ứng dụng khác để xem), tất cả đều được lưu trữ trên cùng một tên miền (không phải tên miền chéo). Cách tiếp cận này hoạt động tốt nhưng gần đây chúng tôi đang xem xét chuyển sang redux như cách tiếp cận này có vẻ bẩn và các đội khác nhau đang tung rất nhiều dữ liệu trên window.top (trên toàn cầu). Điều gì đó giống như redux có thể xử lý nhiều "ứng dụng" "giao tiếp" theo cách thống nhất hơn là chỉ đọc và thiết lập các biến trên window.top hoặc đây có phải là việc sử dụng sai thông tin không?Nhiều ứng dụng phản hồi giao tiếp mặc dù một cửa hàng redux duy nhất

Trả lời

6

Các khung có ngữ cảnh khác nhau. Bạn sẽ phải tham khảo cửa hàng mẹ, ví dụ: để cửa hàng (và dispatch) qua window. Nó được cho là sạch hơn một loại biến ngẫu nhiên.

Điều đó nói rằng: nếu chúng thực sự là ứng dụng độc lập thì tôi có thể chọn thực sự độc lập thông qua các ổ cắm web trong mỗi khung giao tiếp thông qua các bản cập nhật trực tiếp được cung cấp từ đầu cuối (Elixir, Node, v.v.) -suited cho nhiệm vụ.

Làm như vậy cho phép linh hoạt hơn trong việc tách các ứng dụng (ví dụ, tôi chỉ muốn ứng dụng Foo chạy trong cửa sổ riêng của nó), nhận được các khung liên kết vào một xe buýt chung để bất cứ điều gì khác muốn xem xét có thể, v.v.

1

Có, bạn thực sự có thể có một cửa hàng Redux phổ biến ở trang cấp cao nhất và gửi các hành động đến nó. Tuy nhiên nếu bạn muốn các iFrames khác nhau lắng nghe nó cập nhật thì bạn sẽ cần một số phần mềm trung gian Redux để quan sát sự thay đổi trạng thái và cho phép iFrames đăng ký các sự kiện này. Tôi mong đợi mặc dù trong khi điều này có thể cấu trúc mã của bạn tốt hơn một chút để bắt đầu, nếu bạn có rất nhiều đội khác nhau tất cả khỉ vá một cửa hàng Redux duy nhất mã của bạn sẽ nhận được bẩn khá nhanh chóng. Chúc May mắn!

Tôi khuyên bạn nên có thư viện pub/sub, chẳng hạn như postal.js ở trang cấp cao nhất để chuyển thư giữa các ứng dụng khác nhau của bạn và sau đó tạo một cửa hàng đối tượng có tên đơn giản cho dữ liệu được chia sẻ và bảo vệ sử dụng với thư viện liền mạch không thay đổi.

1

Cách tiếp cận này hoạt động tốt nhưng gần đây chúng tôi đang cân nhắc chuyển sang Redux như phương pháp này dường như đội bẩn và khác nhau được tung rất nhiều dữ liệu trên window.top (toàn cầu).

Khi mọi thứ đến thời điểm này, tôi sẽ xem xét việc dọn dẹp mã hoặc triển khai thực hiện lại. Tôi thường tránh lưu trữ bất cứ thứ gì trên toàn cầu hoặc trên cửa sổ.

Tôi rất muốn giới thiệu thực hiện Redux nếu

  • công ty của bạn sẽ sử dụng cổng thông tin này trong một thời
  • bạn muốn tìm hiểu Redux (nó thực sự mát mẻ)
  • một người nào đó trong nhóm là đã quen thuộc với redux

Tại sao lại là redux?

  • nếu bạn đang theo dõi các tiểu bang trên khắp bội điểm hay khung, nó là rất tốt cho việc sử dụng của một nguồn duy nhất của chân lý cho tất cả các quốc gia
  • siêu mô-đun và một niềm vui để làm việc với trong một môi trường đội

Theo mô tả của bạn, có vẻ như Redux của bạn là giải pháp hoàn hảo cho sự cố của bạn.

Redux là khá thẳng về phía trước, nhưng tùy thuộc vào phần còn lại của chồng công nghệ của bạn trông như thế nào, bạn có thể cần phải sử dụng một số loại phần mềm trung gian có Redux.

+0

Việc triển khai Redux không giải quyết được vấn đề cơ bản về giao tiếp giữa các ứng dụng riêng biệt, tuy nhiên, phải không? Đó là INB sạch hơn mà bạn chỉ có một cửa hàng trên cửa sổ chứa, nhưng bạn vẫn có "sự cạnh tranh" cho cửa hàng đó. –

Các vấn đề liên quan