这周着手开始重新构建官网,OTA1.3V继续推进,目前分为了企业版,与国外版,老官网那套架构的代码经过几千人手的改动,于是索性干掉,采用新的架构模式(前后端分离开发部署模式),找到下面这篇文章我觉得说的挺好,在开始讨论这个话题之前我们先来认识一下传统的开发模式。
一、传统开发模式
相信很多做过Web开发童鞋应该都会经历这样一种开发模式,利用后端语言提供的模版引擎编写HTML/XML页面,比如:
- PHP 开发有 Smarty模板引擎
- Java web工程有jsp页面
- Python 各个Web框架都有各自的模板引擎
- NodeJS 的express你懂得
都有一个共同的特点,服务器端后台语言生成解析后的HTML/XML格式返回给客户端,例如浏览器端访问直接返回解析好的HTML,浏览器直接就解释执行。
二、Ajax过渡
Ajax是把前后端分离部署的推进者,当时网页局部更新就是未来前后端分离的开端。那什么是前后端分离开发呢?
简单来说就是前端开发不需要部署后台语言那堆垃圾环境,后端开发也不需要前端写好的任何程序,后台只管暴露各种API接口提供前端进行数据的增删改查,不负责生成HTML页面
前端请求到数据后再动态声称dom节点。
三、前端构建
相对于后台来说,前端构建是重点,因为前后端分离开发后侧重点在于前端,后端就是一个数据提供,权限控制api。
后端项目通常都带自己的Server,除了PHP以外,所以后端做PHP开发的还需要一个WebServer,Apache就是经典配合,最近被抛弃换做Nginx了,所以后台环境本来就是伪生产环境。
前端项目还是要搭建一个Server,然后把项目丢里边才能跑起来调试开发,最笨的直接整一个Apache或者Nginx也可以,但这样开发还是很痛苦。可以利用Node工具集即可,Node工具集非常多,比如我非常喜欢用的BrowserSync。
四、解决请求问题
前后端分离后,我们只需要Server端告诉我们Api URL即可,那么这会产生一个问题:Ajax跨域。这里就不能使用一般的跨域解决方法去解决,比如jsonp,iframe信使等等,因为我们还有POST请求。
于是Http Proxy类工具就有用了,比如我就会在BrowserSync加入中间件判断每一个请求,如果是/api前缀就会代理到API Server端,API Server端收到数据后再返回给BrowserSync,BrowserSync再返回给浏览器端。这样就解决跨域请求的问题
生产环境有两种部署,一种是放到后台项目里,这就没啥说的,另外一种就是前后端分开部署,那就在前端WebServer处理端写点转发规则就好,如Nginx,Apache都支持。
五、静态资源路径问题
如果你的项目有上传资源功能,那自然就会产生用户资源,那前后端分离后,如何来处理这个问题呢?得先看模式。
资源与后台项目放一起,后台处理完后需要返回前台一个相对路径,如果资源时一台单独的服务器,那就需要返回资源的绝对URL即可。
六、会话
Web项目最头疼的就是无状态导致会话问题,传统的Web项目都使用Session/Cookie,但在前后端分离,集群部署模式下这Session明显缺陷太多。token方式已经是当前Web端解决会话的主流,并且有很多开源好用的token生成管理程序,基本上拿来就能用。
最后
前后端分离的弱点,无非有两点
1、前端负载增多,如请求到列表后,前端需要自己遍历数据集声称DOM节点 (目前绝大多数用户的电脑配置都不差,而且浏览器内核已经不在是满身缺陷的IE浏览器了)
2、不利于蜘蛛(其实现在的部分蜘蛛已经很厉害了,能够支持H5 C3效果)
强点,
1、Web端就像手机端的App一样,不需要Cookie/Session,与Server完全分离,易于维护、扩展。一个Server API可以随意服务多个Web App
2、AngularJS用过了以后,你应该会感觉未来的Web开发模式,AngularJS在几乎是前后端分离的领航者
3、前端静态资源与后台API分流,互不影响,甚至不会存在IO问题
4、开发上与后台几乎同步,互相不影响,特别是基于RESTFul API风格,更是减少了沟通的成本
5、方便各自debug,JAVA开发人员不需要跑到前端开发人员机器上看tomcat控制台的报错,前端开发人员也不需要跑到后端开发人员的机器上看浏览器报错调试
开发阶段目前需要考虑到的问题:
1前端负载的问题
2前端跨域调用问题
3安全性考虑(可能遭遇到相关的刷接口,xss攻击等)
4用token传递表示状态,token的安全性问题
相关推荐
这本《Vue Spring Boot前后端分离开发实战》的源码提供了深入学习和实践这一技术栈的机会。以下是对其中涉及知识点的详细说明: 1. **Vue.js**:Vue.js是一个轻量级的前端JavaScript框架,以其易学易用、组件化和...
前后端分离技术是目前Web开发领域一个非常流行的趋势,它的核心思想是将传统的前后端混合开发模式转变为前后端分离的架构模式。这种架构模式可以提高开发效率、增强项目的可维护性、提升用户体验,以及更好地适应多...
前后端分离架构是一种新兴的架构模式,它强调将用户界面与后端服务完全分开,每个部分都可以独立开发和部署。在这种模式下,前端专注于用户界面的构建,而后端则专注于数据处理和服务端逻辑。这种架构的优点包括: ...
发刊论文:面向企业级 web 应用的前后端分离开发模式及实践 针对企业级的 web 应用,研究前后端分离技术,提出一种解决多终端性能、组件化开发和打包部署的完整的开发模型,通过Vue实现组件化开发思想。企业级开发...
**前后端分离与前后端不分离开发模式的比较** **一、前后端不分离** 在传统的前后端不分离模式中,前端与后端的界限较为模糊。前端页面的呈现主要依赖于后端处理,后端负责数据的获取、业务逻辑处理以及页面的渲染...
在现代Web开发中,"前后端分离"已经成为一种常见的架构模式,它旨在提高开发效率,优化用户体验,并简化项目的维护。这种模式下,前端和后端开发人员可以独立工作,通过API进行数据交换。以下是对标题中提及的关键...
本教程将详细讲解基于Vue.js和Spring Boot实现的前后端分离开发框架,帮助开发者理解这一技术栈的工作原理及其实现过程。 Vue.js是一款轻量级的前端JavaScript框架,其特点是易学易用、组件化开发和高性能。Vue的...
在当前的软件开发中,前后端分离已经成为了一种常见的架构模式。这种模式将前端的用户界面与后端的数据处理逻辑分开,提高了开发效率,同时也使得系统更加灵活。而在一些复杂的业务流程管理场景中,引入工作流引擎...
【前后端分离开发的PC端电影网站】是一种现代Web应用的常见开发模式,它将应用程序的用户界面(前端)与业务逻辑(后端)分开,各自独立开发和部署,以提高开发效率、优化性能并增强可维护性。在这个项目中,...
在现代Web开发中,前后端分离已经成为一种常见的架构模式,它可以提高开发效率,明确职责划分,使得前后端能够独立开发和部署。本项目基于Spring Boot实现了后端接口,并结合Vue.js进行前端展示,同时利用axios处理...
在现代软件开发中,Java前后端分离是一种常见的架构模式,旨在提高开发效率和代码质量。在这种模式下,前端和后端开发独立进行,通过API接口进行数据交换。本项目聚焦于利用Java技术栈进行后端开发,Vue.js作为前端...
在Java环境下,前后端分离的开发模式已经成为现代Web应用的标准架构,能够有效提高开发效率和维护性。 【描述】中的关键信息是ueditor的源码使用了Java的SSM(Spring、SpringMVC、MyBatis)框架作为后端基础,并且...
总的来说,“前后端分离项目.zip”是一个全面展示前后端分离开发模式的实例,涵盖了前端开发、后端服务化、API设计、依赖管理等多个方面,对于学习和实践前后端分离技术具有很高的参考价值。开发者可以借此深入理解...
本系统利用现代Web技术,采用前后端分离的架构模式,以SpringBoot为后端开发框架,Vue.js为前端框架,实现了功能完备、界面友好的仓储管理系统。下面我们将详细探讨这一系统的实现原理和关键知识点。 1. **...
Docker+ThinkPHP5+Vue+前后端分离开发模式Jenskins自动部署,全家桶集合.zip面试
总结来说,这个压缩包提供了一个基于 Vue-element-admin 和 Spring Boot 的管理后台项目模板,通过前后端分离的方式实现开发和部署,有助于开发者快速搭建后台系统。Vue.js 和 Spring Boot 的结合,既满足了前端的...
本项目采用前后端分离开发模式,前端使用的技术有Javascript、jQuery、Art-template,后端使用技术有Flask、mysql、redis、celery等。文档全面,可快速部署。 可用于本科毕业设计,难度和工作量均较为适中。资料内...
在现代Web开发中,前后端分离是一种常见的架构模式,它提高了开发效率,增强了系统的可维护性和可扩展性。本项目是基于Thinkphp6框架和JWT(Json Web Token)技术实现的前后端分离示例,旨在帮助开发者理解如何在...
这种模式提高了开发效率,使得前后端可以独立开发和部署。在这个项目中,Spring Boot作为后端服务,提供API接口,Vue 3作为前端,通过HTTP请求与后端通信。 **base_manage** "base_manage"可能是项目中的后端模块,...
在现代Web开发中,"前后端分离"是一种常见的架构模式,旨在提高开发效率,优化用户体验,以及更好地维护和扩展应用程序。本项目结合了SpringBoot和Vue.js两大技术栈,实现了一个高效、灵活的Web应用。 **SpringBoot...