将Ember CLI与Django app集成

时间:2015-09-23 17:55:14

标签: python django ember.js django-rest-framework command-line-interface

在Ember CLI之前,我用来在Django项目中创建一个index.html页面,再加上App.js文件,所有这些文件似乎都运行得很好。 现在Ember正在使用CLI,似乎没有简单的方法可以在Django应用程序中集成Ember CLI项目。 所以我读到人们建议使用Ember CLI开发前端,Django开发REST API。但是部署并不容易,因为您需要复制Django静态文件夹下的Ember dist文件夹,并将Ember app下的所有静态资源URL更改为指向Django静态路径。

所以似乎没有简单的方法将这两者集成到一个单一的开发过程中。

你们有没有关于如何整合开发和部署过程的建议?

THX。

2 个答案:

答案 0 :(得分:7)

对于像这样的项目,您应该为您的服务器应用和客户端应用使用单独的存储库。

考虑一个包含4个代码存储库,1个服务器和3个客户端的项目:

  • myproject (用Python编写的Django应用程序,为客户提供API)
  • myproject-web (用JavaScript编写的Ember.js网络客户端)
  • myproject-ios (用Swift编写的iOS客户端应用)
  • myproject-android (用Java编写的Android客户端应用)

核心应用程序将部署到能够托管Python应用程序的服务器(例如uWSGI)。

因为Ember.js项目最终是一个静态资源,所以您可以从几乎任何地方(例如NGINX)提供它,并将其指向托管Django项目的单独API服务器(例如https://app.myproject.com/api/)。请参阅有关配置ember-django-adapter以使用自定义API主机的文档:http://dustinfarris.com/ember-django-adapter/configuring/

iOS当然会部署到Apple App Store,Android项目将部署到Google Play。

每个存储库都是一个单独的代码库,具有不同的需求和部署策略 - 这就是最好将它们分开的原因,因此您可以考虑它们并单独使用它们。仅仅因为Django可以处理静态资产并不意味着你应该依赖它 - 试图在Django项目中托管Ember.js项目(或任何其他JS框架项目)只会让事情过于复杂。希望有所帮助。

答案 1 :(得分:2)

我目前正在实施由Django提供的Ember-CLI应用程序。

以下是我遵循的步骤:

关于Django:

  1. 在django项目中创建一个子项目(即:ember
  2. 安装将从redis提供index.html的django-redis-views
  3. 在AWS(或其他存储产品)上创建S3存储桶+ CDN以存储您的资产
  4. 关于Ember:

    1. 安装ember-deploy-redis& ember-deploy-s3
    2. 在config.deployment中添加凭据并更正ember-cli-build.js中的指纹
    3. 部署ember
    4. 有用的链接: