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

Single Page Application - Frontend independent of backend?

本文关键字:后端 于后端 独立 应用程序 前端 单页      更新时间:2023-09-26

我做了一些研究,注意到在许多示例中Symfony2/AngularJS应用程序的前端和后端是结合在一起的;例如,视图使用Twig。

我一直认为,单独创建前端和后端并通过API将它们连接起来是可能的(也是常见的做法)。在这种情况下,如果我想改变一个PHP框架,我可以做到没有任何问题,这将足以保持API。

那么,做这件事的最佳实践是什么呢?如果你能向我解释一下就太好了,如果你能给我一个github上好例子的链接或其他什么的,那就更棒了。

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

有很多好处:

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

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

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

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

  • Web服务和API:;鸡肉或鸡蛋"
  • API服务器的安全性:使用密码和会话登录