服务器端渲染春天再临?Deno解释旧技术如何解决客户端渲染困境

前端开发人员常面临两难,想要在网页应用程序添加更多功能,但在增加复杂功能的同时,又会导致用户设备需要下载更多的程序代码,使得加载时间变慢,进而影响用户体验,而Node.js的替代项目Deno则认为,该问题的解决方案将会是服务器端渲染,通过发送由服务器生成的HTML给客户端,来加速客户端加载的速度,同时在各种设备提供一致的使用体验。

比起过去,虽然现在的网络环境更快带宽更大,但是应用程序的大小在过去10年也大幅增加,Deno提到,桌面网页大小的中位数从468 KB增加到2284 KB,总共增长达388.3%,而移动设备的网页大小更是增长1288.1%,从145 KB上升到2010 KB。即便这些程序代码都是应用程序所需,但是需要通过网络传输的内容增加,也就对用户体验造成更大的负面影响。

目前前端常见的技术是单页应用程序和客户端渲染,程序代码主要在客户端浏览器运行,因此客户端需要下载必要的HTML、JavaScript和各种需要的资源,并执行程序代码来呈现用户接口,一旦需要的资源和资料下载完毕,用户便不需要频繁地访问服务器,因此接口更具响应性,使用体验良好,而且因为用户不需要访问服务器,便可以将核心HTML和JavaScript缓存在CDN,在提供快速访问的情况下还能降低成本。

Deno表示,这些技术在桌面环境运行良好,因为用户通常使用主流浏览器和快速的有线网络。但是随着技术发展及各种设备出现,网页应用程序的使用情况更加复杂,开发者将难以在众多种设备中确保单页应用程序使用体验一致,也难以解决当用户在连接不稳定的移动中交通工具,像是火车上访问时,页面呈现可能不如预期的问题。

要解决单页应用程序和客户端渲染所产生的问题,Deno认为,解决方案就是服务器端渲染。Perl和PHP等CGI等脚本语言便是运用服务器端渲染,产生静态HTML文件,让开发人员有能力将后端资料以HTML呈现,使得网页能够依用户需求动态呈现内容,只不过随着JavaScript和浏览器变得更加强大,因此服务器端的工作也就转移到客户端进行。

尽管与单页应用程序和客户端渲染相比,服务器端渲染是较旧的概念,但Deno表示服务器端渲染有其优势,除了客户端在收到HTML时,便已经可以加载并显示,因此服务器端渲染性能更好之外,服务器端渲染的兼容性也更高,因为HTML由服务器生成,并不依赖终端浏览器。另外,运用服务器端渲染也会使前端程序复杂性降低,因为服务器端已经完成大部分工作,所以客户端程序可以使用更简单且更小型的程序代码库实例。

虽然要构建互动式网站,还是必须向靠户端发送JavaScript,但是通过使用NextJS、Remix和Fresh等框架,开发者可以更容易地构建服务器端渲染网站,并且权衡JavaScript的实现,在各种屏幕尺寸和网络条件下,提供一致的网站使用体验,且通过将服务器端渲染应用程序部署在网络边缘,还能够进一步减少内容发送延迟。