आइसोमोर्फिक फ्लक्स ऐप्स में स्टोर डेटा आबादी के बारे में प्रश्न। (मैं alt, आईएसओ और नोड प्रतिक्रिया का उपयोग कर रहा है, लेकिन सिद्धांत अन्य उदाहरण के लिए लागू होता है)आइसोमोर्फिक जेएस - httpRequest क्लाइंट साइड केवल
मैं एक प्रवाह 'दुकान' है (http://alt.js.org/docs/stores/) है कि एक एपीआई से डेटा प्राप्त करने की जरूरत है:
getState() {
return {
data : makeHttpRequest(url)
}
}
और चूंकि उपयोगकर्ता एसपीए के माध्यम से नेविगेट करता है, अधिक डेटा http अनुरोधों के माध्यम से लोड किया जाएगा।
मैं चाहता हूं कि यह ऐप आइसोमोर्फिक हो ताकि मैं नवीनतम डेटा सर्वर के साथ पूर्ण HTML को प्रस्तुत कर सकूं और इसे तेज़ प्रारंभिक पृष्ठ लोड के लिए उपयोगकर्ता को वापस कर सकूं।
react.renderToString() मेरे एचटीएमएल के रूप में प्रस्तुत करना एप्लिकेशन की सुविधा देता है, और मैं जैसे ऑल्ट का उपयोग कर & iso डेटा बीज कर सकते हैं:
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
समस्या यह है कि मैं त्रुटियों जब js सर्वर साइड चल देखेंगे क्योंकि स्टोर एक http अनुरोध करना चाहता है जो यह करने में सक्षम नहीं होगा (जैसे xmlhttprequest नोड में मौजूद नहीं है)
इस समस्या को हल करने का सबसे अच्छा तरीका क्या है?
var ExecutionEnvironment = require('react/lib/ExecutionEnvironment');
...
if (ExecutionEnvironment.canUseDOM) {
// make http request
} else {
// do nothing
}
किसी भी बेहतर विचार:
एकमात्र समाधान मैं के बारे में सोच सकते हैं के साथ दुकान से HttpRequest रैप करने के लिए हो सकता है? अग्रिम में धन्यवाद।
कृपया अधिक जानकारी जोड़ें! E.g: कोड नमूने, – Bwaxxlo
प्रश्न से जुड़े विशेष त्रुटियों को जोड़ा गया कोड स्निपेट और अधिक जानकारी - अगर मुझे कुछ और पता है तो – theStonehill
बैकएंड में AJAX को मजाक करने के बजाय डेटा के लिए अनुरोध प्राप्त करने का उपयोग क्यों न करें? AJAX का पूरा बिंदु यह है कि आप पृष्ठ को फ्रंट-एंड पर पुनः लोड नहीं करना चाहते हैं। चूंकि आप बैकएंड प्रतिपादन कर रहे हैं, बस संसाधन को एक प्राप्त/पोस्ट अनुरोध भेजें, तदनुसार अपने डेटा को पार्स करें और ग्राहक को भेजने से पहले इसे प्रस्तुत करें। – Bwaxxlo