【问题标题】:Best practices for layout out Angular/Django apps布局 Angular/Django 应用程序的最佳实践
【发布时间】:2014-03-18 06:45:02
【问题描述】:

我对 Django 和 Angular 都很陌生。我承认这是主观的,可能有很多方法可以做到这一点,但我想知道人们可以推荐哪些最佳实践来布置这样的应用程序。我特别考虑了后端主要或完全是 RESTful API 服务器的丰富 SPA 的情况,但是我想为任何提供来自 Django 的重要视图的应用程序提供一种通用方法。 (我还没有做足够的事情来决定后者是否值得使用 Angular,或者可能比它的价值更麻烦)。

具体来说:

在与后端不同的目录/存储库中维护前端代码与在 Django 应用程序的“静态”子目录中维护前端代码的优缺点是什么?就我而言,我现在是唯一的开发人员,这对这个决定有一些影响,但我仍然可以认为自己是后端、前端、设计师等独立的“团队”,因为我的工作流程将一次让我担任这些角色之一。

我的设置基本上是一台开发机器,GitHub 中的 SCM,并在 WebFaction 上公开托管(共享网络托管)。我会想轻松地在不同的开发机器上抓取项目,但主要的工作流程只是一个开发,一个产品安装。也就是说,我对实际项目中的最佳实践很感兴趣,因为我希望未来的工作可能是使用 Django。

添加:我非常不确定的另一点是 Angular 应用程序是否应该/必须由 Django 引导。也就是说,首页是否应该由 Django 提供并注入任何数据?

优点:

  • 可以配置从开发到生产的 URL 路径甚至 API 端点,无需任何备用配置,也无需在前端硬编码。
  • 这可能是身份验证所必需的吗?我还不清楚我还没有这样做...
  • 允许使用 Django 调试工具栏应用等工具。

缺点:

  • 将前端耦合到后端。如果我想换掉后者怎么办?如果我希望前端在带有模拟数据的沙箱中工作怎么办?
  • 似乎强烈支持将 所有 Angular 的东西移动到 Django 应用程序布局中。同时,我不喜欢在一个地方混合 Angular 部分,而在另一个地方混合 Django 模板。我已经下定决心不要混合 NG 和 DJ 模板,因为我不相信这样做会有什么好处。

【问题讨论】:

    标签: django angularjs project-setup


    【解决方案1】:

    我还作为 AngularJS FE 的 BE 开始作为 Django 的独立开发人员。我已将 AngularJS 文件放在静态文件夹中,一切都很好。

    缺点肯定是你在一个项目中混合了 FE 和 BE,但我认为这无关紧要,因为你是独立开发者。即使您决定雇佣其他开发人员(拆分 FE 和 BE 工作),您的工作也不会有任何冲突,因为你们中的一个人将完全独立工作。

    对我来说,其中一个优点绝对是我通过 Django 完成了整个登录过程(也是模板),一旦登录成功,我就可以完成其余的 FE(整个 AngularJS 部分)。

    对于 Django REST,我使用了 TastyPie。这是 Django 的 REST 增强功能并且易于设置。

    【讨论】:

    • 谢谢奴隶。我想知道,你的意思是通过 Django 进行登录过程是通过在 Django 应用程序中安装 Angular 应用程序来促进的,还是只是这两个框架很好地结合在一起?如果是前者,我不清楚为什么会这样。
    • 不,整个登录过程是通过 Django 完成的(根本没有 AngularJS),如果用户登录,我会提供 FE 应用程序(例如 index.html,它是 AngularJS 应用程序)。顺便说一句,我看到你提到:“我已经决定不混合 NG 和 DJ 模板”,除了登录屏幕,你绝对不会有任何来自 Django 的模板,如果你愿意,你也可以删除那个模板)。如果你打算使用 AngularJS 作为 FE,那么一切都应该在那里完成,并且只将 Django 用于 REST API。 (我作弊了一点,也用于登录过程)
    • 啊,我想我跟着。那么这里的 index.html 是静态文件还是 Django 视图?我想你是说当用户点击任何 URL 进入应用程序时,Django 基本上将他们路由到登录页面,除非他们已登录,而 Angular 应用程序基本上不“知道”这一点。对吗?
    • 正确。 AngularJS 不知道这一点。
    • 这对您有帮助吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-18
    相关资源
    最近更新 更多