以下是个人在学习这部分知识的时候的简单总结,如有疏漏,欢迎指出。
在渲染页面方面,前端与后端的关系大概经历了三个主要的阶段:
- 后端渲染 + 后端路由
- 前后端分离 + 前端渲染
- 前后端分离 + 前端渲染 + 前端路由
在第一个阶段,当用户输入url的时候,前端向后端服务器发起请求。然后后端会通过一个路由表,找到该url对应的html+css资源,并配合java之类的语言动态添加一些元素和数据,从而渲染好一个完整的页面返回给前端。因为渲染工作由后端完成,所以叫做后端渲染。因为url是在后端通过路由表映射找到资源的,所以叫做后端路由。
后端路由有利于SEO优化。但是,缺点也很明显,就是分工极为不明确。如果页面代码以及后台代码都由后端人员来编写,工作量会很大。但是如果将页面代码分给前端人员编写,前端人员又必须懂得后端技术。另外,前后端代码混在一起不便于后期维护。
第二个阶段,此时交互的角色除了前端与后端服务器,还多了一个静态资源服务器。当用户输入url的时候,前端会向静态资源服务器请求该url对应的一套html+css+js资源,请求完成之后由前端渲染。而此时因为前端不再需要后端来渲染页面,所以只有在需要数据的时候才会向后端发起请求,然后后端把相应的数据返回给前端。因为前端只负责页面,后端只负责数据,所以实现了前后端分离。因为页面的渲染由前端来完成,所以叫做前端渲染。
第三个阶段,就是在第二个阶段的基础上增加了前端路由(有利于模块化开发)的技术。当用户输入url登入某个网站的时候,前端不再是每次请求都分别向静态资源服务器请求网站的其中某一个网页的资源,而是直接一次(懒加载情况下需多次)请求有且仅有一份的该网站的资源,这份资源包含了该网站所有页面渲染时所需要的代码。但是需要注意的是,前端把这一份包含了所有页面代码的资源请求下来之后,并不会把全部代码都渲染到页面上,而是会通过一个路由表,根据所输入的url来判断该渲染哪一部分到页面上,这就是前端路由。