2016-05-08 24 views
10

Tôi biết cách sử dụng redux và phản ứng bộ định tuyến cho SPA. Tự hỏi cách sử dụng redux trong một ứng dụng web nhiều trang truyền thống với khung công tác phía máy chủ như lò xo MVC, jsp, v.v.Làm thế nào để sử dụng redux trong trang web nhiều trang?

Nhiều trang có thể chia sẻ cùng một cửa hàng không? Từ tài liệu hướng dẫn hiển thị phía máy chủ, mỗi máy chủ trang gửi yêu cầu một cửa hàng mới.

+0

Tôi đã hỏi một câu hỏi tương tự hôm qua: http://stackoverflow.com/q/37096921/916450. Không có câu trả lời thực sự (cho tôi), nhưng .. –

+0

Câu trả lời đúng của kwelch là dưới đây. Mỗi trang cần một thể hiện cửa hàng mới (có thể được khởi tạo với cùng dữ liệu!) Vì bạn mất toàn bộ ngữ cảnh thời gian chạy javascript của mình (tôi hy vọng đây là thuật ngữ đúng), với tất cả thư viện đã tải, v.v. khi bạn tải lại trang. – timotgl

Trả lời

3

Nếu bạn đang sử dụng hiển thị phía máy chủ (SSR) thì khách hàng sẽ được tạo một cửa hàng mới trên mỗi kết xuất. Một cửa hàng được tạo với initialState, do đó, có thể giữ trạng thái giữa các tuyến đường bằng cách sử dụng bộ nhớ cục bộ/phiên hoặc được hiển thị trong trang head và được sử dụng trong quá trình tạo cửa hàng để duy trì trạng thái giữa các ứng dụng khác nhau.

+0

SSR = dựng hình phía máy chủ mà tôi đoán? Không siêu rõ ràng :) – timotgl

+0

Có, xin lỗi về điều đó tôi đã cập nhật câu trả lời. – kwelch

0

Vui mừng khi biết rằng bạn đã chống lại bài hát tiếng còi của một SPA lớn CHO MỌI NGƯỜI mà ai đó đang theo dõi những ngày này.

Vì bạn đang có nhiều trang, mỗi trang được coi là 1 ứng dụng React độc lập, do đó, mỗi trang cần 1 Redux lưu trữ. Tuy nhiên, trong nhiều trang ứng dụng của bạn, chỉ có jQuery hoặc tinh khiết React có thể là đủ. Vì vậy, câu trả lời của tôi chỉ đơn giản: sử dụng Redux trên các trang có quản lý trạng thái phức tạp, tương tác người dùng phong phú và nhu cầu bảo trì mã cao.

Giới thiệu về kho lưu trữ Redux, bạn không cần một cửa hàng được chia sẻ trên các trang vì bạn đã có một cửa hàng rất tốt để lưu trữ Internet trong nhiều thập niên: phiên máy chủ. Chỉ điền giá trị được chia sẻ này vào windows.__INITIAL_STATE__ mỗi lần các trang được hiển thị. cookie, local storage, ... là một số lựa chọn thay thế nhưng tôi không nghĩ chúng thực sự cần thiết.

+0

Tôi không nghĩ rằng đó là lời khuyên tốt để phục vụ một ngăn xếp giao diện khác nhau trên các trang khác nhau (như trong trang A phục vụ phản ứng, redux và jquery, trang B chỉ phản ứng, vv). Trình duyệt lưu trữ các gói js trong sản xuất và nó thêm một lớp phức tạp không cần thiết để phân biệt giữa các trang. Trừ khi chúng tôi đang thực sự nói về các ứng dụng * khác nhau * trên các trang khác nhau tại đây. – timotgl

+0

Dude, chúng ta đang nói về trang khác nhau nên không cần phải nói về SPA như mọi người đã biết về nó. Tôi vẫn tin rằng bạn vẫn có thể 'jQuery' hoặc thậm chí 'vanillajs' trên các trang đơn giản. Sử dụng đúng công cụ ở đúng nơi. Ngừng sử dụng 'phản ứng' cho mọi thứ! – haotang

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