前端分离已经成为互联网项目开发的行业标准,通过nginx+tomcat有效地解耦(您也可以在中间添加一个NodeJS),前端分离将为未来的大规模分布式体系结构、灵活的计算体系结构、微服务体系结构、多终端服务(如浏览器、车载终端、Android、IOS等)奠定坚实的基础。
核心思想是,前端html页面通过ajax调用后端restufulapi接口,并使用json数据进行交互。
在互联网架构中,名词解释:
Web服务器:通常指诸如nginx、apache之类的服务器,它们只能解析静态资源。
应用服务器:一般来说,Tomcat、Jetty、树脂等服务器可以解析动态资源或静态资源,但解析静态资源的能力不如Web服务器。
一般情况下,只有Web服务器才能被外部网络访问,而应用服务器只能通过内部网络访问。
1.可以实现真正的前端解耦,前端服务器使用nginx。前端/Web服务器放置一系列静态资源,如css、js、图片(甚至可以将资源(例如CSS、js、图像)放置在特定的文件服务器上,比如Ariyun的OSS,并使用CDN加速)。前端服务器负责控制页面引用&跳转和安培路由,前端页异步调用后端接口,后端/应用服务器使用tomcat(将tomcat作为数据提供程序)来加速总体响应。(您需要使用一些前端工程框架,如NodeJS、Reaction、路由器、Reaction、Redux、webpack)。
2.发现错误,可以快速找到问题所在,不会出现互相踢人的现象。页面逻辑、跳转错误、浏览器兼容性问题、脚本错误、页面样式和其他问题都是前端工程师的责任。接口数据错误、数据未能成功提交、响应超时和其他问题都由后端工程师解决。双方不互相干扰,前端和背面都很珍贵。
3.在大型并发的情况下,我可以同时水平地扩展前、后服务器,比如淘宝的主页,它要求2000+平台前端服务器集群,以抵御每天平均有数十亿美元的PV。(要参加阿里的技术峰会,听他们说,他们的网络容器是自己编写的,即使他是单实例反100000 http并发,2000年单位是2亿http并发,而且它们也可以根据预测的洪峰无限扩展,非常可怕,在主页上。)
4.降低后端服务器的并发/加载压力。除了接口之外,所有http请求都被传输到前端nginx,接口的请求调用tomcat,引用nginx反向代理tomcat。除了第一页请求之外,浏览器还调用大量本地缓存。
5.即使后端服务暂时超时或关闭,前端页面也将被正常访问,但数据不会被删除。
6.也许您还需要与微信相关的轻量级应用程序,这样您的接口才能完全共享,如果还有与应用程序相关的服务,那么只要进行一些代码重构,您也可以重用大量的接口来提高效率。(多终端应用程序)
7.无论页面显示多少,您都不害怕它,因为它是异步加载。
8.Nginx支持在不重新启动服务器的情况下进行页面热部署,而且前端升级更加无缝。
9.增加代码的维护&可读性(前后耦合的代码很难阅读)。
10.提高开发效率,因为您可以在前端和后端开发并行开发,而不是像过去那样强烈依赖开发。
11.在nginx中部署证书,外部网络使用https访问,只有端口443和80是开放的,所有其他端口都关闭(防止黑客端口扫描),并保证使用http的内联网的性能和安全性。
12.前端大量的组件代码可以重用,组件,提高开发效率!