Angular/Django应用程序布局的最佳实践

10

我对Django和Angular都不太了解。我知道这是主观的,可能有很多方法可以实现。但我想知道人们能推荐什么最佳实践来布置这样一个应用程序。我特别考虑的情况是富SPA应用,后端主要或完全是RESTful API服务器,但我希望有一个通用的方法来为任何使用Django服务的重要视图的应用指定一种方法。(我还没做足够的准备来决定是否值得使用Angular,或者会比其价值更大的麻烦)。

具体而言:

将前端代码维护在与后端分离的目录/存储库中与将前端代码放在Django应用程序的“静态”子目录中相比,有什么优缺点?在我的情况下,现在只有我一个开发人员,这个决定有一些影响,但我仍然可以将自己视为独立的“团队”,包括后端、前端、设计师等等,因为我的工作流程将使我在其中一个角色中起作用。

我的设置基本上是一个开发机器,GitHub中的源代码管理,以及在WebFaction(共享Web托管)上公开托管。在未来,我将希望轻松地在不同的开发机器上获取项目,但主要的工作流程只是一个开发人员、一个生产安装。话虽如此,我对现实项目中的最佳实践感兴趣,因为我希望将来的工作可能是与Django一起工作。

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

优点:

  • 可以配置URL路径和甚至是从开发到生产变化的API端点,而无需进行任何备用配置,也无需在前端硬编码。
  • 这可能对身份验证有所帮助?对我来说还不清楚,因为我还没有做过这个...
  • 允许使用像Django调试工具栏应用程序这样的工具。

缺点:

  • 将前端代码和后端代码耦合在一起。如果我想要交换后者怎么办?如果我想让前端在模拟数据的沙盒中工作怎么办?
  • 看起来非常倾向于将所有Angular相关内容移动到Django应用程序布局中。与此同时,我不喜欢在一个地方混合使用Angular部分和另一个地方的Django模板。我已经决定不要混合使用NG和DJ模板,因为我认为这样做没有多大好处。
  • 1个回答

    4
    我也是作为一名独立开发者开始使用Django作为后端,AngularJS作为前端。我将AngularJS文件放在静态文件夹中,一切都很好。
    缺点肯定是你的前端和后端混在一个项目中,但我认为这并不重要,因为你是独立开发者。即使你决定雇用额外的开发人员(分离前端和后端工作),你们之间的工作也不会有任何冲突,因为你们中的一个人可以完全独立地工作。
    对我来说其中一个优点肯定是我通过Django(包括模板)完成了整个登录过程,登录成功后我提供了剩余的前端部分(整个AngularJS部分)。
    对于Django REST,我使用了TastyPie。它是Django的REST增强功能,易于设置。

    谢谢Slaven。我在想,你是不是指通过Django进行登录流程是因为将Angular应用程序放在Django应用程序中使得这一过程更加便捷,还是说这两个框架只是很好地搭配在了一起?如果是前者,我不太清楚为什么会这样。 - Jason Boyd
    1
    不,整个登录过程都是通过Django完成的(没有AngularJS),如果用户已经登录,我会提供FE应用程序(例如AngularJS应用程序的index.html)。顺便说一句,我看到你提到:“我已经决定不混合NG和DJ模板”,除了登录屏幕之外,你将绝对不会从Django中使用任何模板,如果你愿意,甚至可以删除那个登录屏幕。如果你要使用AngularJS作为前端,所有的事情都应该在那里完成,并且只使用Django作为REST API。(我有点作弊,也用它来处理登录过程) - Slaven Tomac
    啊,我明白了。这里的index.html是一个静态文件还是Django视图?我理解你的意思是当用户访问应用程序中的任何URL时,Django基本上会将他们路由到登录页面,除非他们已经登录,而Angular应用程序基本上不知道这一点。对吗? - Jason Boyd
    1
    正确。AngularJS 不知道这个。 - Slaven Tomac
    抱歉我没有标记为“已回答”,因为我希望听到其他人在处理Angular/Django时的经验。这个问题可能会被关闭,因为它太主观了,但我希望它不会被关闭,因为我发现整个话题并不是很明显。您的意见对我有很大帮助。 - Jason Boyd
    显示剩余4条评论

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接