【问题标题】:Bridging a Python back-end and JavaScript front-end桥接 Python 后端和 JavaScript 前端
【发布时间】:2017-08-08 21:08:49
【问题描述】:

我目前正在从事一个项目,该项目涉及解析用户提供的文件,使用该数据进行计算,并使用图形实用程序将结果可视化。现在,我坚持使用 Python 作为后端,因为它具有 JavaScript 中不可用的科学库,但我想将整个工具移动到 Web 服务器,在那里我可以使用 D3.js 进行更流畅的可视化。

工作流程类似于:从浏览器获取文件内容,使用内容执行 Python 脚本,返回计算值的 json 化对象,并使用 D3 绘制这些对象。我已经让后端和前端自己工作,但想知道:我该如何桥接两者?根据我收集到的信息,我需要沿着启动服务器、向服务器发送 AJAX 请求以及从服务器检索数据的行。但是随着框架数量的增加(Flask、cgi、apache、websockets 等),我不确定从哪里开始。这可能只是一个非常简单的 Web 应用程序,只有一个文件提交页面和一个数据可视化页面。任何帮助表示赞赏!

【问题讨论】:

  • 主要基于意见的问题被认为是本论坛的主题。我不确定您是否真的在寻找关于什么框架是“最好的”的意见,而是寻找一些方向来开始研究一种对您来说是新的应用程序。如果是这样,也许可以改写它;我不确定。
  • 很抱歉给您带来了困惑。我关心的是后者。我知道每个框架都有自己的优缺点,由我决定哪个最适合我的项目。我问的是更基本的问题:以这些框架为例,集成的前端/后端在概念上会是什么样子?

标签: javascript python


【解决方案1】:

Apache 是 web 服务器,flask 是 python 中的 web 框架,websockets 是协议,cgi 是完全不同的东西,它们都不能在前端帮助你。

您可以在flask、django、pylons 或任何其他python web 框架中部署一个简单的后端。我喜欢 django,但对于你的目的来说它可能有点重,flask 更轻量级。您将它们部署到安装了 Web 服务器的服务器上,并使用 apache 之类的东西进行分发。

那么您需要一个前端和一种交付前端的方式。 Flask / Django 都完全能够与 Web 服务器结合使用,或者您可以使用像 Amazon S3 这样的静态文件服务器。

在您的前端,您需要加载 D3,并且可能需要某种实用程序(如 jQuery)从后端加载和解析您的数据,然后使用 D3,但您喜欢在屏幕上显示它。

【讨论】:

  • 信息量很大。看来我还有很多东西要学!在此过程中,我会牢记所有这些事情。
  • 没问题。如果您实际上只提供静态文件,我建议您将所有内容放在 AWS 上的 S3 存储桶中并将其配置为 Web 服务器。做起来很简单,基本免费,教程数不胜数。但似乎您不仅在提供静态文件。您需要一个应用程序层来接受来自用户的文件,然后转换数据并将其发送回前端,在这种情况下,您需要诸如烧瓶或 django 之类的东西,以及某个地方的实际服务器实例来使用 Web 服务器运行它安装/配置。
【解决方案2】:

Flask 易于启动和运行,并且基于 Python。它适用于 REST API 和 JSON(或 JSON API)发送的数据。

这是我有一些经验的一种解决方案,它似乎运行良好,并且不难启动和运行(并且很自然地使用 Python)。我无法告诉您这是否是满足您需求的最佳解决方案,但它应该可以工作。

如果您不知所措并且不知道从哪里开始,您可以选择其中一个选项并在 Google 上搜索教程。有了一个不错的教程,您应该在教程结束时建立并运行一个示例,然后您将知道您是否愿意使用它并知道它是否会满足您的需求。

然后您可以进行概念验证;制作一个只处理一小部分的小应用程序(也许是您最关心处理的那个)并编写一些可以做到的东西。

到那时,您可以非常确定您有一个很好的工具来实现这一目的(除非您被概念验证说服 - 在这种情况下,请使用其他选项再试一次 :-))

【讨论】:

  • 我会再试一次 Flask!在来这里之前我实际上已经研究过了,但我看到很多意见说如果你只提供静态文件(我相信我是这样),那么 Flask 是不必要的。谢谢!
  • 我错过了仅关于静态文件的部分。如果它只是静态文件,则可能是您不需要它。我们有更多。但是很容易提出来。我曾与 Apache 合作过,但从未从头开始。就我所见,Apache 是非常可靠和稳定的 Web 服务器,并且在很多地方都在使用它,它是一项真正经过验证的技术。我的回答是需要与 Python 后端集成(这听起来不仅仅是静态页面——你有一个后端处理的东西,而不仅仅是 html 页面)
  • 从技术上讲,你可以只使用javascript,因为python支持JSON API,发送请求可以返回JSON,这是JS熟悉的。
猜你喜欢
  • 2020-06-17
  • 1970-01-01
  • 1970-01-01
  • 2022-08-17
  • 1970-01-01
  • 2021-07-06
  • 2020-12-03
  • 1970-01-01
相关资源
最近更新 更多