项目结构:后端 rails-api,前端 react、webpack. 后端统计出一批数据、前端可以根据这些数据生成效果图,现在需要将这批效果图保存到数据库 (carrierwave) 中。 数据不由人工录入,也就是说没有 UI,所以没办法直接传图片信息到后端。 是先产生原数据-->React 前端通过异步 API 生成图片-->要将图片信息保存到数据库 (上传到 s3 等一系列操作) 我现在想到了四种方案
方案一:在 rails 端重新写一遍生成算法,并绘制图片存起来 生成算法可能很复杂,比较麻烦。
方案二:rails 端使用 execjs 之类的,执行 js 并把图片存起来 可能需要将 react 组件抽象成独立可用的。并且因为前端有 react、webpack,不确定 execjs 能否顺利执行。
方案三:react 端进行部分服务端渲染,将这些图片变成可抓取的 HTML,然后 Rails 把数据抓过来 这有点本末倒置的感觉。
方案四:类似 Selenium 之类的,在服务器上模拟浏览器操作,然后把图片保存出来。 需要在服务器上装很多奇奇怪怪的包。
最后解决方案采用了在服务端使用 phantomjs 跑,不过需要改写一下 react 组件。 另外服务端渲染也是可行的