2017-06-17 76 views
0

在我的Web应用程序中,用户可以绘制一些对象。使用d3js(SVG)实现绘图功能(在客户端)。对象的属性(形状,坐标,颜色)在服务器端保存在结构化数据库中。如何在Python Web应用程序(Heroku)的服务器端运行d3js?

现在,我需要在服务器端渲染图纸。我想重用(在服务器端)渲染逻辑在客户端实现。也就是说,要获得SVG(然后将其转换为PNG/PDF),给定数据库中保存的对象属性。

我看到(至少)以下选项:

  • 安装在Heroku上的NodeJS为好,从我的Python Web应用程序执行节点。如果我理解的很好,这将需要JSDOM - 参见this;
  • 使用ghost.py打开一个本地HTML文件,用于执行实际渲染(使用d3js);
  • 将呈现的SVG从客户端发送到后端 - 但这是一个糟糕的选择。

您的建议是?

后来编辑

Ghost.py是不是一种选择,因为它需要的PyQt或PySide,两者都不可以在Heroku上安装。见this

PhantomJS似乎是一个不错的选择。

一些参考

Migrate from jsdom to phantomJS ? (basic DOM creation)

Server-side rendering of visualisations using NodeJS

回答

1

我不会推荐第三个选项,因为从客户端来回服务器可能会导致问题,并且最好避免使用。

第一个选项可以工作,但是对于一个特定的问题,您有一个完整的框架。

我喜欢第二个选项,使用ghost.py,因为它的概念很容易理解,也很轻夫妇的代码库,这始终是写得很好的项目目标的其他部分。

您还可以使用phantomJS运行这个(或类似的东西),这是同一种方法,因为ghost.py,而是直接给JavaScript。

+0

谢谢,我去** phantomjs **,它工作得很好。 –

相关问题