组织大型Flask + AngularJS应用

时间:2016-01-29 02:55:55

标签: python angularjs

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

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

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

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

问题:

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

感谢任何指导和帮助。

1 个答案:

答案 0 :(得分:1)

我首先做这样的事情:

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

现在你已经设置了这个东西,让我们来谈谈你的Flask API项目。

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

现在,一般来说:

  • 为您的免费/付费产品设置一个域名。当用户注册时,让他们选择一个计划。
  • 根据用户是免费还是付费更改产品网址,两位用户在登录时都应定向www.mywebsite.com/dashboard

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

祝你好运!