2017-06-17 13 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を編集し、それはHerokuの上にインストールすることができますどちらもPyQtはやPySideを、必要とするため、オプションではありません。 thisを参照してください。

PhantomJSのようです。

いくつかの参照

Migrate from jsdom to phantomJS ? (basic DOM creation)

Server-side rendering of visualisations using NodeJS

答えて

1

私はそれを避けるために、クライアントからサーバに前後に行くことの問題を引き起こす可能性があるので、第三の選択肢をお勧めしますし、最高ではないでしょう。

最初のオプションは機能しますが、特定の問題のフレームワーク全体があります。

私は概念的に分かりやすく、よく書かれたプロジェクトの目標であるコードベースの他の部分と非常に軽く結合するので、ghost.pyを使用して2番目のオプションが好きです。

また、phantomJSを使ってこれを実行することもできます。これはghost.pyと同じ種類のアプローチですが、javascriptとまったく同じです。

+0

**私は** phantomjs **に行ってきました。 –

関連する問題