大家好,我是Cason。前端领域发展多年,不仅没有衰落,反而势力逐渐扩大。一个直观的现象:市场上对“前端”和“后端”岗位的需求一直居高不下,而原生开发(IOS、Android),也比“前端”更“前端””,逐渐下降。虽然“前端”发展很快,但太阳底下并无新鲜事,web前端终究会走“原生应用”走过的路。如果以史为鉴,那么一个趋势是不可阻挡的——前端会越来越“左”。本文内容参考LanguageServersistheNewFrameworks[1]和CompilersaretheNewFrameworks[2]什么是“左”?IBM曾经发明了一个计算机术语ShiftLeft[3](左移)。对于开发者来说,“开发”的行为可以分为不同的阶段:Read(当我们编写的代码肉眼出现在屏幕上时)Save(代码保存时)Commit(代码提交时)Build(whenthecodecompile))Run(运行代码时)开发人员的注意力越往左,越早发现bug(也就是“左移”)。举两个极端的例子:对于Read,依靠TS的静态分析,在写代码的时候就可以知道类型推导相关的错误。对于Run,有些bug可能需要几天才能运行,用户反馈后才会知道。因此,对于成熟的开发体系,开发者肯定会更加关注“左”。为了给开发者更多的支持,前端的“基础设施”会越来越左。“前端框架”从Run到Build的发展就是一个明显的例子:作为中世纪前端领域最大的框架,jQuery是一个绝对的运行时解决方案,帮助开发者在运行时抹平浏览器之间的差异。代码正在运行。从jQueryyyds到现代的React、Vue,都需要引入编译能力。React需要编译JSX,Vue需要编译模板语法。StackOverflow前段时间发布的《2021年开发者报告》中最流行的前端框架Svelte,打着“零运行时”的口号。从Build到Read不过,Build毕竟不是最左倾的。从Build直接到Read(最左边)有什么发展吗?没错,这就是LSP(LanguageServerProtocol,即语言服务协议)。当然,不是这个LSPLSP是编辑器和语言工具(例如linters、静态类型检查、代码风格检查)之间通信的标准协议。如果没有LSP,不同的语言需要实现这些工具来与不同的编辑器进行通信。有了LSP,他就可以充当语??言和编辑器之间的桥梁。对于前端领域,不同的前端框架都在积极探索LSP的可行性。例如:Vetur[4],作为Vue的VSCode工具集,是Vue开发者的标配。相比Vue的模板语法,React可以直接写JS得到更好的静态类型解析。虽然Hooks在编写上有一些规则和限制,但React使用Hooks相关的lint来避免开发人员编写错误的Hooks的可能性。同时,所有的Hooks都有一个统一的useXXX前缀,这也为以后进一步的编译时分析提供了可能。Angular还提供AngularLanguageService[5]TailwindCSS提供TailwindCSSIntelliSense。总结这些趋势,对于普通业务开发的同学来说,意味着未来越来越多的前端工具会提供“编译工具”和“IDE插件”。现在有一个“webpack配置工程师”,但未来可能需要一个team-specific的“IDE配置工程师”。对于想取代竞争的前端同学,可以学习LSP相关知识,将来在大厂担任基础设施岗位。参考资料[1]语言服务器是新框架:https://dev.to/dx/language-servers-are-the-new-frameworks-1lbm[2]编译器是新框架:https://tomdale。net/2017/09/compilers-are-the-new-frameworks/[3]左移:https://devops.com/shift-left-can-you-be-left-out/[4]Vetur:https://github.com/vuejs/vetur[5]Angular语言服务:https://github.com/angular/vscode-ng-language-service
