如何在Python Web应用程序(Heroku)的服务器端运行d3js?
问题描述:
在我的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
似乎是一个不错的选择。
一些参考
答
我不会推荐第三个选项,因为从客户端来回服务器可能会导致问题,并且最好避免使用。
第一个选项可以工作,但是对于一个特定的问题,您有一个完整的框架。
我喜欢第二个选项,使用ghost.py,因为它的概念很容易理解,也很轻夫妇的代码库,这始终是写得很好的项目目标的其他部分。
您还可以使用phantomJS运行这个(或类似的东西),这是同一种方法,因为ghost.py,而是直接给JavaScript。
谢谢,我去** phantomjs **,它工作得很好。 –