javascript - 结合 react 和 Jade

标签 javascript node.js express pug reactjs

我正在开发一个带有 express + react 的同构 javascript 应用程序。我们开始使用jade 作为静态内容的服务器端模板,但是将两者结合起来很快变得笨拙。我们最终得到了这样的结果:

在快速 route :

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({});,会这样吗?对性能造成重大影响?如果是这样,是否有更好的方法来轻松组合静态和动态 block ?

最佳答案

虽然这可能有点离题:我们坚持使用 Jade 模板。

基本上,我们希望在需要时灵活地为站点区域使用非 react + 通量架构。我们的网站基本上由许多较小的 SP 应用组成:Site、UserAccount、Team 和 Admin。

我们为什么要这样做?

  • 对于没有访问网站所有部分的用户来说,文件大小和开销更小。

  • 如果需要,可以选择“退出” React 和 Flux。

  • 更简单的服务器端身份验证。

关于javascript - 结合 react 和 Jade ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29396843/

相关文章:

node.js - Express handlebars 呈现为字符串而不是响应

javascript - 从变量渲染表 (EJS)

javascript - 超测测试 express 中间件

javascript - 如何使用 Node Js 或 javascript 计算距另一个点一定距离的点的纬度/经度

javascript - 检查选择框选项重复次数是否超过特定次数

javascript - HTML5音频永久循环通过不同的来源

javascript - Socket.io 发射两次火焰

MySQL 操作数应包含 3 列

JavaScript “map” 函数

javascript - 使用 Typescript 进行 react :Unable to pass function prop to child component