李理
现在的网站容量太大了,根据长期跟踪其他网站的性能及其使用技术的HTTP Archive数据统计,单个网页大小平均约2MB。良好的移动4G连接可以在不到一秒钟的时间内下载2MB字节。但是,今天的网页对于连接速度慢或带宽较小的用户来说是个不小的问题。
当今的网站容量如此之大原因很多,其中包括广告和跟踪脚本,它们占据了相当多的页面。另一个原因是网站不仅仅显示文本和图像,现在许多站点看起来像复杂而庞大的桌面应用程序。
为了构建这些交互式站点,许多Web开发人员都转向使用处理常规任务的开源软件包。这些开源工具将程序员从繁重的重复工作中解放了出来,但是它们使网页更加繁琐。例如Facebook用于构建用户界面的开源React库的容量约100 KB,但加入其他一些图形和工具包,占用很快就要用MB计算了。
由新闻工作者和软件开发人员里奇·哈里斯创建的新兴JavaScript框架Svelte旨在让编写更快速、更小型的交互式网站和应用程序变得更加容易。Web开发人员肖恩说,他通过从React切换到Svelte,将个人网站的大小从187 KB减少到9 KB:“我甚至没有试图优化尺寸,它的容量就已经下降了。”
Web 框架层出不穷,作为主流 Web 框架之一的 Svelte,有着独特的优势。它不仅可以构建完整的 Web 应用程序,还可以创建自定义元素,并与其他框架制作的已有Web应用程序良好兼容。Svelte是一个有趣的客户端/服务器框架并且可以改变我们的开发方式,它可以在构建时预先呈现JavaScript。Svelte类似于Vue.js的JavaScript框架,传统的框架需要运行时用代码来定义和执行模块、保持状态,更新视图并且还要运行这些框架。而Svelte完全融入JavaScript中,就好像没有引用这个框架,这种方式有益于减小文件大小。
使用框架会增加网站的容量,因为它们是应用程序代码和用户浏览器之间的中间层。这意味着开发人员除了开发自己的代码之外,还需要将整个框架与应用程序捆绑在一起,即使他们只使用了框架的少数功能。
哈里斯是《纽约时报》的图形编辑,他在2016年为《卫报》工作時创建并发布了Svelte的第一版。他当时开发的多个项目都涉及交互式图形和动画,但他担心图形加载时间太长会破坏用户的数据限制。
哈里斯采取了独特的解决方法:在开发人员将代码上传到Web服务器之前,Svelte执行其中间层工作。即在用户下载代码之前,就删除不必要的功能,从而缩小生成的应用程序。当用户运行应用程序时,它还减少了活动部件的数量,这可以使Svelte应用程序更快、更高效。虽然该框架创建起来更棘手,但拥护者表示,它使开发人员更容易构建高效的应用程序。
一些程序员将Svelte用于网页,但仍然将React(起源于 Facebook 的内部项目,因为对市场上所有 JavaScript MVC 框架都不满意,Facebook就决定自己写一套用来架设Instagram 的网站。做出来以后,发现这套东西真的很好用,就在2013年5月开源了)用于较大的应用程序或专业工作。因为应用程序越大就越有可能使用到React的所有功能,这样浪费的容量可以忽略不计。
某些情况下Svelte应用程序甚至比使用React或类似工具制作的应用程序更大。
而且与Svelte开发人员相比,业界对React开发人员的需求更大,认可度更高。在JavaScript 2019年对两万名开发人员的调查中,使用Svelte的受访者中有88%表示对它感到满意,使其在调查中排名第二,仅次于React的89%满意度。但只有7.8%的受访者使用过Svelte,而24.7%的人从未听说过。相对的有80.3%的人使用过React。为什么开发人员会犹豫学习Svelte,因为JavaScript开发的世界发展迅速,程序员已经有了令人眼花缭乱的工具。React的优势在于得到了Facebook的支持,拥有强大的就业市场以及与之兼容的庞大第三方应用生态系统。
Svelte最适合对性能和文件大小有特别限制的情况,例如在智能电视或低功耗设备上运行的应用程序。
一些Svelte开发人员使用它来构建更大的应用程序,瑞安·阿特金森是Felt Social的创始人,该公司提供了用于构建高度可定制的社交网站的工具。他之所以选择Svelte,是因为它可以使应用程序响应速度更快,即使它们不一定总是最小的。他说:“Svelte的体系结构可以从根本上改变构建用户界面的游戏。”