Pytanie o populację danych sklepu w aplikacjach strumienia izomorficznego. (Używam reagować, alt, ISO i węzeł ale teoria odnosi się do innych przykładów)Isomorphic JS - tylko strona z klientem httpRequest
Mam topnika 'Store' (http://alt.js.org/docs/stores/), który musi uzyskać dane z API:
getState() {
return {
data : makeHttpRequest(url)
}
}
i gdy użytkownik przechodzi przez SPA, więcej danych zostanie załadowanych za pośrednictwem żądań http.
Chcę, aby ta aplikacja była izomorficzna, dzięki czemu mogę renderować aplikacje pełne html, w tym najnowsze strony serwera danych i zwracać je użytkownikowi w celu szybkiego wczytania strony początkowej.
react.renderToString() pozwala mi uczynić aplikację jako HTML i mogę zaszczepienia danych za pomocą Alt & iso jak:
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
Problemem jest to, że widzę błędy podczas uruchamiania po stronie serwera js ponieważ sklep będzie chciał utworzyć żądanie http, którego nie będzie w stanie zrobić (ponieważ xmlhttprequest nie będzie istniał w węźle):
Jaki jest najlepszy sposób rozwiązania tego problemu?
Jedynym rozwiązaniem można myślę, byłoby zawinąć HttpRequest ze sklepu z:
var ExecutionEnvironment = require('react/lib/ExecutionEnvironment');
...
if (ExecutionEnvironment.canUseDOM) {
// make http request
} else {
// do nothing
}
lepiej pomysłów? Z góry dziękuję.
Dodaj więcej informacji! E.g: próbki kodu, konkretne błędy związane z pytaniem – Bwaxxlo
dodany fragment kodu i więcej szczegółów - daj mi znać, jeśli jest coś jeszcze. – theStonehill
Dlaczego nie użyć żądania pobrania danych zamiast kpić z AJAX w backend? Cały aspekt AJAX polega na tym, że nie chcesz ponownie ładować strony na front-end. Ponieważ renderujesz backend, po prostu wyślij żądanie get/post do zasobu, przeanalizuj dane i wyrenderuj je przed wysłaniem do klienta. – Bwaxxlo