Я работаю над изоморфным javascript-приложением с выражением+. Мы начали использовать jade для серверных шаблонов для статического контента, но сочетание этих двух быстро становится громоздким. Мы закончили с чем-то вроде этого:
В экспресс-маршрутах:
router.get("/", function(req, res) {
var webpackStats = require('../../config/webpack-stats.json');
var reactHtml = React.renderToString(HiwApp({}));
var slideshowHtml = React.renderToString(slideshowApp({}));
var config = {
webpackStats: webpackStats,
reactOutput: reactHtml,
slideshowHtml: slideshowHtml
};
res.render("how_it_works/howitworks", config);
});
В Jade:
body
.company-logo.center
#react-main-mount
!= reactOutput
include ./content_block_1.jade
include ./content_block_2.jade
#slideshow-main-mount
!= slideshowHtml
Это очень хрупкое, если мы хотим, чтобы jsx, затем шаблон jade, затем больше jsx, мы должны убедиться, что получим правильный порядок.
Моя идея - все это сделать с помощью jsx. Я знаю, что для этого есть React.renderToStaticMarkup, но это не решает проблему смешивания динамического со статическими страницами.
Большие вопросы: если мы решили сделать все это с помощью jsx (скажем, layout.jsx, который содержит все компоненты), тогда позвоните React.renderToString(App({});
, это будет серьезный удар производительности? Если это так, есть ли лучший способ сделать это, чтобы легко объединить статические и динамические блоки?