Istnieje kilka opcji dostępnych dla coraz System.import
pracy z izomorficzna renderowania/server-side:
Funkcja wykrywania System
i polyfill
Węzeł pozwala zadzwonić require()
w szeregu Miejsca i przyciemnianie System.import
w następujący sposób powinny działać:
if (typeof System === "undefined") {
var System = {
import: function(path) {
return Promise.resolve(require(path));
}
};
}
Jeśli szukasz bardziej niezawodnej implementacji, istnieje również es6-micro-loader, która implementuje polyfill System
, który działa zarówno w przeglądarce, jak i w węźle.
Zastosowanie babel-plugin-system-import-transformer zastąpić System.import
z równoważną UMD wzór
znaczy przyjmuje następującą postać:
System.import('./utils/serializer').then(function(module){
console.log(module);
});
i transformuje go do:
new Promise(function (resolve, reject) {
var global = window;
if (typeof global.define === 'function' && global.define.amd) {
global.require(['utilsSerializer'], resolve, reject);
} else if (typeof module !== 'undefined' && (module.exports && typeof require !== 'undefined') ||
typeof module !== 'undefined' && (module.component && (global.require && global.require.loader === 'component'))) {
resolve(require('./utils/serializer'));
} else {
resolve(global['utilsSerializer']);
}
}).then(function(module){
console.log(module);
});
lub
Build with Webpack targeting Node (który użyje wymagają załadowania fragmenty):
webpack --target node
używasz modułów CSS? dzieje się, gdy zaimportujesz swój CSS do swojego komponentu? – QoP
Rzeczy mogą się przewrócić, gdy korzystasz z funkcji zależnych od sieci Web na serwerze. Stworzyłem uniwersalny kocioł reagujący, który wykorzystuje pakiet sieciowy do pakowania kodu serwera. W ten sposób możesz udostępniać więcej między serwerem a kodem klienta. [Sprawdź to tutaj.] (Https://github.com/ctrlplusb/react-universally) Może być przydatnym punktem odniesienia dla ciebie. Starałem się bardzo często komentować te rzeczy. – ctrlplusb