单页应用程序 - 前端独立于后端?

时间:2014-10-04 18:52:39

标签: javascript php angularjs symfony

我已经完成了一些研究,并且我注意到在很多例子中,Symfony2 / AngularJS应用程序将前端和后端组合在一起;例如,视图使用Twig。

我一直认为可以(并且通常的做法)分别创建前端和后端,然后通过API加入它们。在这种情况下,如果我想更改PHP框架,我可以毫无问题地完成它,并且足以保持API。

那么做这件事的最佳做法是什么?如果你能向我解释它会更好,如果你只是给我一个关于github上的好例子的链接,那就更好了。

1 个答案:

答案 0 :(得分:14)

我们一直在使用相同的方法开发一些项目。不仅我认为它没有任何副作用,而且解决方案也非常优雅。 我们通常在Node.js中创建后端,它只是一个API服务器(不一定完全符合REST)。然后,我们为前端创建另一个单独的Web应用程序,完全用HTML5 / JavaScript(带或不带Angular.js)编写。 API服务器从不返回任何HTML,只是JSON!甚至不是索引结构。

有很多好处:

  • 代码非常干净优雅。前端和后端之间的通信遵循标准化方法。服务器公开了一些API,客户端可以自由使用它们。
  • 这使得前端和后端拥有不同的团队变得更容易,并且他们可以非常自由地工作而不会相互干扰。通常编码能力有限的设计师也很欣赏这一点。
  • 前端只是一个静态HTML5应用程序,所以它可以(我们经常这样做)可以轻松地托管在CDN上。这意味着您的服务器根本不必担心静态内容,并且减少了负载,从而节省了资金。用户也更开心,因为CDN通常对他们来说非常快。

根据我们的经验,我可以给你一些提示:

  • 最大的问题是用户身份验证。它并不是特别复杂,但您可能希望使用OAuth 2.0之类的协议来实现身份验证,供内部使用。因此,前端应用程序将充当OAuth客户端,并从后端获取身份验证令牌。您可能还需要考虑将身份验证服务器(使用OAuth)从API服务器移动到另一个单独的资源上。
  • 如果您将webapp托管在其他主机名(例如CDN)上,则可能需要处理CORS,也许还需要JSONP。
  • 您编写后端的语言并不重要。我们已经在PHP(包括Laravel)中完成了这项工作,尽管我们使用Node.js获得了最佳结果。对于Node.js,我们发布了基于RestifyJS的boilerplate on GitHub

我在过去问了一些您可能感兴趣的问题: