Câu hỏi về lưu lượng dữ liệu dân số trong các ứng dụng thông lượng đẳng cấu. (Tôi đang sử dụng phản ứng, alt, iso và nút nhưng lý thuyết áp dụng cho ví dụ khác)JS isomorphic - httpRequest phía máy khách chỉ
Tôi có một thông lượng 'cửa hàng' (http://alt.js.org/docs/stores/) mà cần phải lấy dữ liệu từ một api:
getState() {
return {
data : makeHttpRequest(url)
}
}
và khi người dùng điều hướng qua SPA, nhiều dữ liệu hơn sẽ được tải thông qua các yêu cầu http.
Tôi muốn ứng dụng này là đẳng cấu để tôi có thể hiển thị các ứng dụng đầy đủ html bao gồm phía máy chủ dữ liệu mới nhất và trả lại cho người dùng để tải trang ban đầu nhanh chóng.
react.renderToString() cho phép tôi làm cho ứng dụng như html, và tôi có thể gieo rắc các dữ liệu sử dụng alt & iso như:
storeData = { "MyStore" : {"key" : "value"}}; // set data for store
alt.bootstrap(JSON.stringify(storeData || {})); // seed store with data
var content = React.renderToString(React.createElement(myApp)); // render react app to html
Vấn đề là tôi sẽ thấy các lỗi khi chạy phía máy chủ js như cửa hàng sẽ muốn thực hiện một yêu cầu http mà nó sẽ không thể làm (như xmlhttprequest sẽ không tồn tại trong nút)
Làm cách nào tốt nhất để giải quyết vấn đề này?
Giải pháp duy nhất tôi có thể nghĩ đến sẽ được quấn HttpRequest từ các cửa hàng với:
var ExecutionEnvironment = require('react/lib/ExecutionEnvironment');
...
if (ExecutionEnvironment.canUseDOM) {
// make http request
} else {
// do nothing
}
Bất kỳ ý tưởng tốt hơn? Cảm ơn trước.
Thêm thông tin khác! Ví dụ: các mẫu mã, các lỗi cụ thể liên quan đến câu hỏi – Bwaxxlo
đoạn mã được thêm vào và chi tiết hơn - hãy cho tôi biết nếu có bất kỳ điều gì khác – theStonehill
Tại sao không sử dụng yêu cầu nhận dữ liệu thay vì chế nhạo AJAX trong chương trình phụ trợ? Toàn bộ điểm AJAX là bạn không muốn tải lại trang trên front-end. Vì bạn đang thực hiện kết xuất phụ trợ, chỉ cần gửi yêu cầu get/post tới tài nguyên, phân tích dữ liệu của bạn cho phù hợp và hiển thị dữ liệu trước khi gửi cho khách hàng. – Bwaxxlo