单页应用程序-前端独立于后端
Single Page Application - Frontend independent of backend?
我做了一些研究,注意到在许多示例中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服务器的安全性:使用密码和会话登录
相关文章:
- angularjs在操作后没有刷新客户端
- 加载客户端脚本后下载静态网页
- 在执行客户端脚本后获取文档源
- 创建要下载的文件(客户端与后端)
- 验证后 JSON 数据服务器端
- 重定向到后端脚本后的新 URL
- 完成所有上传后的 FineUploader 客户端事件
- 完成更新面板回发后如何执行客户端代码
- node.js串行端口事件在重新连接到端口后停止工作
- 单页应用程序-前端独立于后端
- jQuery DataTables,更新后刷新网格(服务器端处理)
- 如何在客户端浏览器上呈现完整网页的副本后立即在服务器端存储该副本
- window.scroll()在jQuery移动端导航后不起作用
- 在使用javascript向下拉列表添加项目并运行服务器端代码后,无效的回发或回调参数
- 是node.js + express(后端)+ emberjs(客户端)一个合理的堆栈为我的项目
- Web:在进行缓慢的服务器端调用后,我们如何在客户端显示内容
- 当Ajax从服务器获取数据时,字体端还是后端应该创建html输出
- 我可以运行一些自定义脚本后ASP.. NET客户端页面验证失败
- 在客户端或后端生成CSV
- 在服务器端验证后保持显示隐藏文本框