【发布时间】:2021-05-22 02:23:46
【问题描述】:
我的客户端应用程序是使用 Create React App 构建的,它内置了很多便利。但是,开箱即用的服务器端渲染是不可能的。因此,一旦运行 build 命令,所有输出实际上都是静态的。
我有一个用例,我不想切换到完成 SSR 设置,但想将一些数据动态添加到 index.html 文件,以便在客户端首次加载文件时立即在 javascript 中可用。
我想出了以下解决方案:
- React 应用作为 docker 容器运行,使用
serve库提供静态构建内容 - 单独的节点服务在不同的 docker 容器中运行,并且可以通过共享卷从 react 应用程序访问构建内容
- 节点服务每隔几分钟运行一个函数,该函数使用
fs读取index.html文件的内容,将一些附加数据插入到脚本标签(例如window.myData={someKey: 'someValue'})中,并将更新后的字符串写入index.html.
本地使用docker-compose,效果很好。但是,我想知道这种方法可能产生的后果,尤其是当节点服务正在读取/写入 index.html 上的某种文件锁定时,对 react 应用程序的传入请求将失败的情况。
我不认为这会是一个问题,但我有足够的疑问来发布这个问题。由于一些不可预见的问题,我能承受的最后一件事是我的生产应用程序中的请求失败。
感谢任何意见、建议、轶事等!
【问题讨论】:
-
我知道已经过去了很长一段时间,但仍然:您是否设法解决了这个问题,而不求助于 docker 等?也许以类似于@Phuoc Do 的答案的方式?
标签: reactjs create-react-app server-side-rendering