【问题标题】:Server side rendering React in Java SpringbootJava Spring Boot 中的服务器端渲染 React
【发布时间】:2019-05-08 04:33:51
【问题描述】:

我是服务器端渲染的新手,我想在服务器端渲染 React 组件并在 html 中传递它。

我在https://spring.io/guides/tutorials/react-and-spring-data-rest/ 上关注了本教程。它仍在客户端上呈现。

我在百里香模板中找不到renderToString 的方法。

我该怎么做?

【问题讨论】:

  • 不可能。您需要 node.js 来为 React 或任何其他单页应用程序框架执行服务器端渲染。
  • 感谢您的评论。你能提供一个链接或一些指向你的陈述的资源吗?
  • 糟糕的是,您需要在服务器端解释 js。也许你可以在 java 中使用 nashorn 来做到这一点。看看这个来自 spring 团队的 repo github.com/sdeleuze/spring-react-isomorphic。您会发现更多使用 node.js 的示例
  • 他们在本教程中配置了它spring.io/guides/tutorials/react-and-spring-data-rest,但他们没有在服务器端渲染它stackoverflow.com/questions/46388210/…。我希望它在服务器上呈现它,然后将 html 发送到客户端(更像是同构应用程序)。
  • 嗯,这正是我给你的项目中所做的。他们设置了 ScriptTemplateConfigurer 和 ScriptTemplateViewResolver

标签: java reactjs spring-boot thymeleaf server-side-rendering


【解决方案1】:

使用 Nashorn 你可以做到,Nashorn 是一个 JavaScript 引擎,默认与 Java 打包在一起。

Nashorn 已作为 Java 8 的一部分发布。这主要侧重于允许在 Java 中嵌入 JavaScript 应用程序。

Nashorn 将内存中的 JavaScript 编译为 Java 字节码,并将其传递给 JVM 执行。

更多详情您可以查看以下链接:-

https://www.baeldung.com/react-nashorn-isomorphic-app.

**

Nashorn 现已弃用,因此您可以为此使用 GraalVM

**

https://medium.com/graalvm/improve-react-js-server-side-rendering-by-150-with-graalvm-58a06ccb45df

【讨论】:

  • 其实,Baledung 有一篇关于这个主题的好文章:baeldung.com/react-nashorn-isomorphic-app。您必须通过 Java 运行的 JS 引擎在后端执行 JS 代码,以便在将某些组件发送到客户端之前填充它们。用户以您的服务器计算资源为代价获得更高的性能。
【解决方案2】:

GraajVM 在服务器端渲染 React 应用程序时非常方便,其基准测试证明与 V8 具有可比性和出色的结果。 Bellow 是一个极好的实现:https://github.com/davehancock/thymeleaf-reactjs-graalvm

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 2020-06-29
    • 2019-10-05
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    • 2020-10-17
    • 2018-01-30
    • 2016-10-12
    相关资源
    最近更新 更多