语言服务器是新的框架

2025-06-04

语言服务器是新的框架

Svelte 3于 2019 年发布时,最受期待的功能就是对 TypeScript 的支持。而当2020 年终于宣布支持 TypeScript 时,大家的反响更是令人欣喜。

但秘密在于——Svelte 的核心代码不需要做太多改动。它只是在其核心职责中添加了语言工具。Svelte 多年来一直拥有 TypeScript 预处理器——但直到 VS Code 扩展发布后,它才被认为拥有“TypeScript 支持”。

我认为这表明了一种更广泛的趋势:

JavaScript 的第三时代,所有框架都会提供自己的语言服务器。

作为证据,你会看到这种模式也出现在其他框架中:

  • Vetur是所有 Vue.js 开发人员的标准工具
  • React 强烈建议使用ESLint 检查来强制执行 Hooks 规则(这可能是一种轻描淡写的说法;如今,如果没有 ESLint 检查器,可能没有 React 专业人士会相信自己能够正确编写 Hooks)
  • Angular 有Angular 语言服务(感谢Mike)并且 Ember 正在开发它(感谢Alex
  • Tailwind Labs 的第一位员工是 Brad Cornes,他开发了 Tailwind IntelliSense 插件
  • GraphiQLRelay CompilerApollo VS Code可以被视为 GraphQL 开发的语言服务器

Linting、类型检查、始终运行的编译以及其他形式的编写时检查和优化并非新鲜事物。事实上,当开发团队编写单元测试和 Lint 规则时,他们实际上是在为自己的应用创建定制的语言服务器。新功能在于,提供实时反馈现在已成为所有框架的共同责任。这种标准化提高了启动新项目和在项目之间移动时的生产力。

为什么

出现这种情况的直接原因很简单:成本。

IBM发现越早发现错误,修复成本就越低,于是创造了“左移”一词Neil指出,这项研究可以追溯到20 世纪 80 年代 Barry Boehm 的研究)。如果将软件开发生命周期从左(设计)到右(生产)进行排列,其理念是,如果将错误“左移”,那么通过更早地发现错误,就能节省实际成本(这一点存在争议——而且很难找到证据!)。

当然,成本的另一面是开发者体验成本是老板付的钱,体验是我们自己的感受。我们总是倾向于那些引导我们走向成功深渊的工具。

你可以将这个想法翻译成现代术语:

替代文本

然后绘制框架缓慢向左移动的过程:

替代文本

记得我说过成本是直接原因。我相信还有一个更深层次、更根本的原因。

汤姆是对的(现在仍然如此)

2017 年,Ember 核心团队的 Tom Dale 观察到了这一演变的第一部分,即“编译器是新的框架”

我目前的“投资论点”是,我们所谓的 Web 框架正在从运行时库转变为优化编译器。当谈到如何利用手工编写的 JavaScript 及其配套的运行时库来提升性能时,我们已经达到了收益递减的临界点。

他不仅惊人地正确(Svelte 从一开始就是作为编译器构建的),而且这个过程也尚未完成(Next.js 可以说是 React 的优化编译器,但 React 团队本身正在研究选择性水合和混合客户端/服务器模型)。每个框架基本上都会发明自己的元语言(ReactSvelteActiveRecord),以在更流行的通用语言的限制下解决开发人员的体验问题,而这种语言最终都需要被编译。

我只是将这个思路延伸到它的自然结论:我们所说的 Web 框架正在从运行时库转变为具有一流语言服务器支持的优化编译器。

我不知道这个观察有多独特,但当我第一次意识到它时,感觉很有启发。在你观察了一些框架和开发者平台的演变之后,你开始看到同一部电影一遍又一遍地上演。为了提供更好的开发者体验,你最终会创建一种语言。一种语言需要一个编译器。编译器最终需要一个语言服务器。

卖铲子

语言服务器承担着许多繁重且毫无差别的工作——文件监控、处理、报告、为每个 IDE 提供插件支持等等。如果我们都要构建语言服务器,为什么每次都要重新发明轮子呢?

替代文本

当然,如果语言服务器是框架的新标准,那么拥有语言服务器层通用轨道的人将会做得很好。微软首先为 VSCode开发了语言服务器协议,并于 2017 年对其进行了标准化。这是一个慷慨的举措,确保该协议可以与非微软 IDE(如EclipseIntelliJ甚至vim)以及非微软语言(如Python)兼容。由于 LSP 具有讽刺意味的是与语言和工具无关的特性,因此也大大降低了整整一代与语言和编辑器无关的初创公司(如SourcegraphKite )的门槛

对于那些想要使他们的开发工具项目成功的人,这是我的建议:花时间了解语言服务器的工作原理。

作者注:TS 核心团队的 Orta留下了精彩的评论,其中提供了更多资源来了解 Anders Hejlsberg 的 LSP 和即将推出的“构建服务器协议”!


查看 Twitter 对话


注意:这是我第二次 React Rally 演讲的论文的三分之一


DX Circle是一本关于开发者工具、开发者社区以及投资开发者体验型初创公司的全新期刊。如果您想投稿,欢迎联系我

文章来源:https://dev.to/dx/language-servers-are-the-new-frameworks-1lbm
PREV
衡量开发者关系
NEXT
我能给其他开发人员的最大建议