前端知识体系
当前,三大主流前端框架分别是React、Vue、Angular这三个框架
一 , 了解前后端分离的演变史
1 . 1 后端为主的 MVC 时代
-
为了降低开发的复杂度, 以后端为出发点, 就是后端的 MVC 时代
-
发起请求到 前端控制器 ( DispatcherServlet )
-
前端控制请求
HandlerMapping
查找Handler
可以根据xml
配置, 注解进行查找 -
处理器映射器
HandlerMapping
向前端控制器返回Handler
-
前端控制器调用处理器适配器去执行
Handler
-
处理器适配器去执行
Handler
-
Handler
执行完成给适配器返回ModelAndView
-
处理器适配器向前端控制器返回
ModelAndView
ModelAndView
是SpringMVC
框架 的一个底层对象, 包括Model
和View
-
前端控制器请求视图解析器去进行视图解析, 根据逻辑视图名解析成真正的视图
JSP
-
视图解析器向前端控制器返回
View
-
前端控制器进行视图渲染, 视图渲染将模型数据在
ModelAndView
对象 填充到request
域 -
前端控制器向用户响应结果
-
优点 :
- MVC 是一个很好的协作模式, 能够有效降低代码的耦合度, 从架构上能够让开发者明白代码应该写在哪里, 为了能够让 View 更纯粹, 还可以使用 Thymeleaf, Freemarker 等模板引擎, 使模板里无法写入 Java 代码, 让前后端分工更加清晰
-
缺点 :
- 前端开发重度依赖开发环境, 开发效率低, 这种架构下, 前后端协作有两种模式 :
- 第一种 是前端写 DEMO, 写好后, 让后端去套模板, 好处是 DEMO 可以本地开发, 很高效, 不足时还需要后端套模板, 有可能套错, 套完后还需要前端确定, 来回沟通调整的成本比较大
- 另一种协作模式就是前端负责浏览器的所有开发和服务器的 View 层模板开发, 好处是 UI 相关的代码都是前端去写就好, 后端不太关注, 不足就是前端开发重度绑定后端环境, 环境成为影响前端开发效率的重要因素
- 前后端职责纠缠不清 : 模板引擎功能强大, 依旧可以通过拿到的上下文变量来实现各种业务逻辑, 这样,只要前端弱势一点, 往往就会被后端要求在模板层写出不少业务代码, 还有一个很大的灰色地带是
Controller
, 页面路由等功能本该是前端最关注的,但却是由后端来实现,Controller
本身与Model
往往也会纠缠不清, 看了让然咬牙的业务代码经常会出现在Controller
层, 这些问题不能全归于程序员的素养, 否则 JSP 就够了 - 对前端发挥的局限性 : 性能优化如果只在前端做空间非常有限, 于是我们经常需要后端合作, 但由于后端框架限制, 我们很难使用 [ Comet ], [ BigPipe ] 等技术方案来优化性能
- 在 2005 年前, 包括早期的 JSP , PHP 可以称为 Web 1.0 时代, 在这里想说一下, 如果是一名Java 初学者, 请不要再把一些陈旧的技术当回事, 比如 JSP, 因为时代在变,技术在变,什么都在变, 唯一不变的就是变化本身
- 前端开发重度依赖开发环境, 开发效率低, 这种架构下, 前后端协作有两种模式 :
1 . 2 基于 AJAX 带来的 SPA 时代
- 是啊金回到 2005 年
AJAX
被正式提出并开始使用CDN
作为静态资源, 于是出现了JavaScript
王者归来的SPA
单页面应用时代
-
优点 :
- 这种模式下, 前后端的分工非常清晰, 前后端的关键协作点是
AJAX
接口, 看起来是如此美妙, 但回过头来看看的话, 这与 JSP 时代区别不大, 复杂
- 这种模式下, 前后端的分工非常清晰, 前后端的关键协作点是