Вы можете попробовать пакет npm maka-cli , сгенерировать шаблонное приложение с реакцией, material-ui и SSR и посмотреть, как я это сделал:
$ maka create NewApp --theme=material --ssr=true --client=react
Затем перейдите к файлу:
./NewApp/imports/startup/server/index.jsx
и вы можете видеть, как приложение защищало материал-интерфейс с помощью SSR. Обратите внимание, что здесь не используется последний материал-интерфейс (1.0.0-бета.36) ... но это может быть начало!
/************* SSR Code ********************/
import Routes from '../lib/routes.jsx';
import React from 'react';
import { renderToStaticMarkup } from 'react-dom/server';
import { onPageLoad } from 'meteor/server-render';
import { StaticRouter } from 'react-router-dom';
import { createMemoryHistory } from 'history';
import { SheetsRegistry } from 'react-jss/lib/jss';
import JssProvider from 'react-jss/lib/JssProvider';
import { create } from 'jss';
import preset from 'jss-preset-default';
import { MuiThemeProvider, createMuiTheme } from 'material-ui/styles';
import createGenerateClassName from 'material-ui/styles/createGenerateClassName';
import { grey } from 'material-ui/colors';
onPageLoad(sink => {
const history = createMemoryHistory(sink.request.url.pathname);
const App = (props) => (
<StaticRouter
location={props.location}
context={{}}>
<Routes history={history}/>
</StaticRouter>
);
// Create a sheetsRegistry instance.
const sheetsRegistry = new SheetsRegistry();
// Create a theme instance.
const theme = createMuiTheme({
palette: {
primary: grey,
accent: grey,
type: 'light',
},
});
const jss = create(preset());
jss.options.createGenerateClassName = createGenerateClassName;
const html = renderToStaticMarkup(
<JssProvider registry={sheetsRegistry} jss={jss}>
<MuiThemeProvider theme={theme} sheetsManager={new Map()}>
<App location={sink.request.url} />
</MuiThemeProvider>
</JssProvider>
);
const css = sheetsRegistry.toString();
sink.appendToHead(`<style id="jss-server-side">${css}</style>`);
sink.renderIntoElementById('app', html);
});