大家好,我是卡森。最近发布了Stackoverflow2021开发者报告,其中一个引起了我的注意:Svelte是所有框架中最受欢迎的(不仅是前端)。这并不是说Svelte是使用最多的,另一项调查显示React是开发人员最需要的框架。毕竟,React的生态繁荣程度摆在那里。国内前端生态普遍落后国外2~3年。因此,今天我们从2021年的报告来预测2024年的国内前端生态情况。Svelte背后的意义作为一个前端框架,Svelte在语法和用户体验上并没有什么特别之处。他最重要的意义在于:对AOT(ahead-of-time,可以理解为预编译)在前端框架领域的探索,包括Elm(2012)、Marko(2014)、Vue2(2014)到Svelte(2016)年),先驱们继续探索AOT。我们可以从两个角度来看AOT的含义:DX(DeveloperExperience,开发者体验)UX(UserExperience,用户体验)DX(开发者体验)同时写过React和Vue的朋友可能会有以下感受:为什么React有那么多性能优化的API(比如PureComponent,React.memo...)需要我手动调用,而Vue没有。原因是性能优化作为一种??功能,如果框架本身不能自动完成,则只能由开发人员手动完成。框架要自动完成,需要给框架足够的提示。Vue使用的模板语法的语法限制实际上是隐式提示。例如,下面的模板代码暗示只有span节点是一个动态和变化的节点:由于JSX过于灵活,React无法从语法层面给出足够的提示,因此无法自动完成性能优化的功能。对于React来说,改变的方式有两种:给JSX添加约束这是选择Solid.js,一个同样使用JSX但具有AOT能力的框架。比如在React中使用数组map的方式遍历JSX,在Solid.js中使用for语法:{(item)=>{item}
}/For>这作为语法限制的提醒。添加约定,比如所有的Hooks都以use前缀命名,这可以为React未来的AOT能力提供一些线索。UX(UserExperience)WEB环境与其他视图环境相比有很大的不同:注意应用体积想想看,如果你在手机上下载一个60mb的应用,你会不会想:是不是假下载?为什么这么小??再想想,在PC游戏里没有20G硬盘的情况下夸自己仔细打磨不是很丢脸吗?但是一个web应用程序,如果它有60mb,加载需要20秒。你能忍受吗?因此,Web开发人员一直致力于减小应用程序的大小。一个很简单的道理:如果一段必要的逻辑不能在编译时完成,就必须在运行时完成。编译时完成意味着结果在运行时执行,代码量更小。运行时完成后,需要将运行逻辑一起加载,代码量较大。所以AOT无论从DX还是UX的角度来看都是盈利的。制轮方向发生了变化。如果接受AOT是大趋势的设定,那么三年后国内开发者的造轮方向也将发生变化。在重runtime前端的时代,大家造轮子的方向都是:运行时性能优化解决方案runtimei18n解决方案……但是随着上层框架逐渐普及AOT,从框架衍生出来的各种轮子也会更偏向于编译时。所以,未来几年想要吃得更开的前端朋友可以学习一下编译原理。总结一个优秀的前端同学2024年的工作内容很可能是这样:用和2021年前端一样的框架语法和范式开始构思和期待从AST(抽象语法树)造轮子的时候?你害怕吗?