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

tdu*_*zik 13 javascript php symfony angularjs

我做了一些研究,我注意到在很多例子中Symfony2/AngularJS应用程序的前端和后端组合在一起; 例如,视图使用Twig.

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

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

Ita*_*Ale 14

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

有很多好处:

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

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

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

我问你过去可能感兴趣的一些问题: