本文内容参考Language Servers are the New Frameworks[1]以及Compilers are the New Frameworks[2]
IBM曾发明一个计算机术语Shift Left[3](左移)。
对开发者来说,「开发」这一行为可以分为不同阶段:
当开发者的注意力越向左,越能尽早发现bug
(即「左移」)。举两个极端例子:
Read
,依赖于TS
的静态分析,在编写代码的同时就能知道类型推导相关的错误Run
,某些bug
可能要运行好几天,用户反馈过来才知道所以,对于成熟的开发体系,开发者的注意力肯定会更多放在「左边」。
为了赋予开发者更多支持,前端「基建」会越来越偏左。
「前端框架」的发展是个明显的例子:
作为前端领域第一大框架,jQuery
是绝对的运行时方案,他帮助开发者在代码运行时抹平浏览器的差异。
jQuery yyds
到了React
、Vue
,都需要引入编译能力。
React
需要编译JSX
,Vue
需要编译模版语法。
前段时间StackOverflow
公布的《2021年开发者报告》中最受欢迎的前端框架Svelte
更是打出了「零运行时」的口号。
但是,Build
毕竟不是最偏左的,有没有从Build
直接往Read
(最左边)发展的呢?
有,这就是LSP
(Language Server Protocol,即语言服务协议)。
当然,不是这个LSP
LSP
是编辑器和语言工具(例如linter
、静态类型检查
、代码风格检查
)之间进行通信的标准协议。
没有LSP
,不同语言需要实现这些工具与不同编辑器的通信。
有了LSP
,他就能作为语言与编辑器之间沟通的桥梁。
对于前端领域,不同前端框架都在积极探索LSP
方面的可行性,比如:
Vue
针对VSCode
的工具集,是Vue
开发者的标配Vue
的模版语法,React
直接写JS
可以获得更好的静态类型分析
。虽然Hooks
在书写上有些规则限制,但是React
通过Hooks
相关lint
很好规避了开发者书写错误Hooks
的可能性。
同时,所有Hooks
有统一useXXX
的前缀也为未来进一步的编译时分析提供可能。
Angular
也提供了Angular Language Service[5]TailwindCSS
提供了Tailwind CSS IntelliSense
这些趋势对于普通业务开发同学来说,意味着:未来会有越来越多前端工具提供「编译工具」、「IDE插件」,现在有「webpack配置工程师」,未来可能需要团队专属「IDE配置工程师」。
对于想错位竞争的前端同学,可以学习LSP
相关知识,未来走大厂基建岗位。
[1]
Language Servers are the New Frameworks:https://dev.to/dx/language-servers-are-the-new-frameworks-1lbm
[2]
Compilers are the New Frameworks:https://tomdale.net/2017/09/compilers-are-the-new-frameworks/
[3]
Shift Left:https://devops.com/shift-left-can-you-be-left-out/
[4]
Vetur:https://github.com/vuejs/vetur
[5]
Angular Language Service:https://github.com/angular/vscode-ng-language-service