前端服务与后端服务的搭配方式
我们打开浏览器的调试工具,切换到网络Tab,可以看到有各种各样的请求类型,包括 HTML,CSS,JS,字体,Image,媒体,清单,WS,WASM,其他等。这些都是网页里要展示的内容和数据,由远在天边的服务器返回。
Web前端的发展
在早期 Web 服务中,前后端功能都比较简单,文件是静态文件,由后端服务程序负责返回,比如nginx,Apache等。
后面 Web 2.0 迅速发展,网页内容变成了动态的,网页只是个框架,内容是存在数据库里的,诞生了各种 P 技术,JSP/PHP/ASP等。这些服务,读取网页文件+读取数据库里的数据,拼接成完整的网页,返回给浏览器。点击网页里的超链接加载下一页、或者提交一个评论,都会打开新的页面,可能是新的tab或者当前窗口,但都是加载一个新的页面。
随着 Google Map 和 Gmail 的发展,在一个页面里对地图进行各种操作放大/缩小/加载更多的信息,为了操作更加连贯,进行动态变化,而不是刷新页面,衍生出了Ajax请求,可以在网页里动态请求数据,然后动态的修改页面的部分。
此后,在电脑及手机设备的配置增强,及浏览器JS引擎的性能提升,以及 Node.js 诞生的背景下,又发展出了单页面应用,Single Page Application, SPA。这种技术使得看起来是很多个页面,像是一个桌面/手机应用的网站,背后却只有一个HTML,它的各种展示都是由JavaScript动态绘制的。
后面 Node.js 与 单页面应用的发展阶段
| 发展阶段 | Node.js | 单页面应用 |
|---|---|---|
| 2009-2012 | 提供高并发后端 | 适用于 API 服务器,但与前端关系不大 |
| 2013-2016 | 构建工具(Grunt/Gulp/Webpack) | 前端使用 Node.js 进行工程化 |
| 2016-2020 | SSR、GraphQL、Serverless | 单页面应用开始依赖 Node.js 运行 |
| 2020 至今 | Edge Computing、Deno、Bun | 前端和后端进一步融合 |
前端分工越来越重要,成为独立的职位。
前端服务和后端服务
因为Node.js的加持,前端工程师的工作,不只是在停留在浏览器里,也拓展到桌面端,服务端。比如可以自己启动服务,进行本地开发、热更新,然后还可以自己进行部署服务。