React.js使用Java的服务器端渲染[没有Node.js]

2022-09-02 13:27:44

我们在纯 JSP/JQuery 中有一个应用程序,我们正试图将其迁移到 ReactJs 以实现可维护性。我看到的 ReactJs 的一个好处是服务器端渲染。但是,我所看到的服务器端渲染的所有示例都使用 Node.js 作为服务器端。我们目前正在使用Tomcat,而不是倾向于部署node.js仅用于服务器端渲染。

我考虑过一些替代方案,例如使用Nashorn(http://winterbe.com/posts/2014/04/05/java8-nashorn-tutorial/)

然而,Nashorn似乎还没有准备好生产。

有没有人在生产环境中部署了 React.js在 Tomcat 上进行服务器端渲染?


答案 1

尝试在没有NodeJS的情况下在服务器端渲染Javascript应用程序是折磨自己的好方法。尝试在jvm中运行javascript甚至更糟。我建议不要这样做。

可以使用PhantomJS(从技术上讲,它在没有Node的情况下运行)甚至在*nix上使用xvfb和Chrome来渲染完整的客户端服务器端。所有这些都已经完成,调试有不同程度的痛苦。

在tomcat本身运行javascript是相当不寻常的......除了“因为我们可以”之外,我看不出其他的意义。我最好的猜测是,没有人在生产中这样做。


答案 2

为什么不在服务器端渲染方面更进一步,以反应式风格制作实时单页Web应用程序,而无需使用普通的Java语言.js Node?

Reactive Server Pages项目使用的方法类似于Elixir Phoenix Live View或Scala Korolev框架。

动机:

  • 熟悉的Java中的响应式Web UI,无需客户端 - 服务器API,无需JS框架和npm依赖关系管理;
  • 轻量级的SSR生成了几乎普通的HTML页面,对SEO友好;
  • UI组件是常规的Java类;
  • 将应用程序呈现工作负载和UI逻辑从客户端的浏览器带到服务器,您的代码始终保留在服务器上;
  • 像调试任何普通的Java代码一样调试UI代码;
  • 使用Java Web标准构建,目前在Jetty上运行,但理论上也应该在Tomcat上运行。

推荐