【问题标题】:Organizing Large Flask + AngularJS application组织大型 Flask + AngularJS 应用程序
【发布时间】:2016-01-29 02:55:55
【问题描述】:

我以前有一个中等复杂的 Flask + AngularJS 应用程序的经验。但现在我开始开发一个新的更复杂的应用程序,需要帮助我如何设置 Python 和 AngularJS 应用程序。以下是有关该应用的一些信息。

  • 后端是 Python (Flask) 应用,使用 Pandas 来操作数据
  • Python 将有一个用于前端的 api 和一个公共 api
  • 前端将是 AngularJS SPA,主要是 Google Charts
  • 该应用将提供免费和付费版本
  • 付费版会比免费版显示更多图表
  • 还会有一些用于信息、定价、注册、登录的静态页面
  • 倾向于免费和付费使用单个 Postgres 数据库

我的想法是将每个后端和前端分成单独的模块。我正在考虑在 Flask 中使用 Blueprint 来分离免费和付费应用程序。在前端,我更喜欢将图表作为模块化指令,可以从免费复制到付费,反之亦然。

我不清楚如何最好地设置 Python 应用程序的文件夹结构以及 AngularJS 文件所在的位置。我还希望免费和付费应用程序是模块化的,以便开发人员可以单独处理每个应用程序而不会影响另一个应用程序。

问题:

  • 微服务架构是更好的方法吗?
  • 免费和付费应用程序应该是一个代码库还是完全独立的
  • Blueprint 是使用 Flask 的最佳方法,还是应该将 Python 应用完全分开?
  • 什么是免费/付费使用的好域策略? (例如,付费应该是像 admin.example.com 和免费的 example.com/dashboard 或类似的子域)

【问题讨论】:

标签: python angularjs


【解决方案1】:

我会先做这样的事情:

  • 创建一个名为 mysite-www 的 Github 存储库。此 repo 将仅保存您的 HTMl / CSS / Angular 代码,并作为静态站点部署到 Amazon S3 / Cloudfront 之类的站点。这意味着您的前端将非常快,并且不依赖于任何后端代码。
  • 创建一个名为 mysite-api 的 Github 存储库。此存储库将保存您的 Flask 代码并部署到动态服务器基础架构,如 Heroku / EC2 / Elastic Beanstalk。

现在您已经完成了这些设置,让我们来谈谈您的 Flask API 项目。

  • 您的产品的免费版和付费版都应该有一个代码库。将它们分成单独的项目是没有意义的,因为您将使用 99% 的相同代码。
  • 您应该在您的用户帐户上设置一些标志,告诉您(以及随后的 Angular 前端)用户是付费用户还是免费用户,然后根据这些用户设置限制功能。李>
  • 如果您有任何中等复杂的 API,您应该始终在 Flask 中使用蓝图。蓝图让您拥有漂亮的 Python 代码嵌套文件夹,它们都控制着 API/网站的不同部分。

现在,一般来说:

  • 为您的免费/付费产品提供一个域。当用户注册时,让他们选择一个计划。
  • 不要根据用户是免费还是付费来更改产品 URL,登录时应将两个用户定向到 www.mywebsite.com/dashboard

根据您希望如何在前端和 API 之间对用户进行身份验证,您可能希望使用 OAuth2 协议。我在一家让这件事变得简单的公司工作,回复:http://flask-stormpath.rtfd.org/,但也有很多其他很棒的选择:Flask-Security、Flask-Login 等。

祝你好运!

【讨论】:

  • 在我的前端,我认为最好是免费或付费进行身份验证,并为每个人提供不同的视图。我认为在一个视图中规定免费和付费显示的内容会变得混乱。我想我正朝着这个方向前进。但我喜欢将前端分离为纯静态文件的想法。感谢您的回复。
猜你喜欢
  • 2011-12-21
  • 2012-03-12
  • 2015-01-20
  • 2019-07-26
  • 2016-11-15
  • 2010-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多