当前位置:首页 > 网站源码 > 正文内容

vue源码逐行解析(vue3源码解析)

网站源码5个月前 (06-22)162

来自公众号: 前端充电宝

来自公众号: 前端充电宝

2023 年 2 月 8 日,Volar 作者 Johnson Chu 在 Vue.js 官方博客发文展望了 Volar 的 2023 年,下面就来看看详细内容吧!

2023 年 2 月 8 日,Volar 作者 Johnson Chu 在 Vue.js 官方博客发文展望了 Volar 的 2023 年,下面就来看看详细内容吧!

Volar 是 Vue.js 官方的 VSCode 扩展。当官方推荐 Vetur 时,Volar 还是一个个人项目,随着时间的推移,由于改进的性能和体系结构而被采纳为新的官方扩展。作为一个旨在改善开发体验的项目,用了两年多的时间才达到了 1.0 版本 ,并且一直在不断改进稳定性。但还有许多工作要做,2023 年有更令人兴奋的计划!

Volar.js:嵌入式语言工具框架

尽管最初是为 Vue 单文件组件的特定需求而设计的,但 Volar 的代码库包含许多不特定于 Vue 的部分,例如:

嵌入式编程语言的处理;

Vue 语言服务器实际上是一个成熟的 Type 语言服务器;

处理与 LSP / Web / 嵌入式语言服务等交互的代码。

嵌入式编程语言的处理;

Vue 语言服务器实际上是一个成熟的 Type 语言服务器;

处理与 LSP / Web / 嵌入式语言服务等交互的代码。

注:语言服务器并不是一个真的服务器,而是把语言相关的特性和功能从 IDE 中解耦出来,作为一个独立的程序单独运行,提供了例如引用查询等功能的具体实现。

注:语言服务器并不是一个真的服务器,而是把语言相关的特性和功能从 IDE 中解耦出来,作为一个独立的程序单独运行,提供了例如引用查询等功能的具体实现。

现在已经将这些通用部分提取到一组与框架无关的工具中。这些工具现在作为一个新的独立项目进行维护: Volar.js[1] 。

Volar.js 的架构支持任何涉及嵌入式语言的文件格式——不仅是 Vue,还包括 Astro、Svelte,甚至 Angular。它还能够实现常规的单语言 LSP servers,例如 Type、CSS 和 HTML。

Volar.js 的另一个主要关注点是 性能。它旨在最大限度地减少实现原生嵌入式语言服务性能的开销。有很多问题和优化机会,只有在拥有大量用户的情况下才能发现,而 Volar.js 是根据从数百万次下载中积累的经验进行优化的。

展开全文

例如,字节跳动的 Lynx 团队是 Volar.js 的早期采用者,一个开发人员用两周的时间交付了一整套支持其内部框架的语言工具。如果它是从头开始构建的,即使是一个团队也需要几个月的时间。

旧的 Volar 现在是 vuejs/language-tools

提取核心后,原始 Volar 扩展和 vue-tsc 的代码库已移至 vuejs/language-tools[2] 存储库。这个存储库现在依赖于 Volar.js 并包含对 Vue 特定支持的代码。

除此之外,还将把一些 npm 包从 @volar的 npm 组织转移到 @vue。不过,这些变化不应该影响用户。

团队与组织

Vite[3] 从 Vue 生态系统中脱颖而出,并最终成长为自己的社区,连接整个 Web 开发生态系统的用户,Volar.js 也希望走同样的路。

Volar 作者 Johnson Chu 与 Astro 核心团队成员 Erika 建立了 Volar.js 核心团队,致力于改善开发者体验。团队将共同努力,为所有 Web 开发者改进 DX,而不仅仅是 Vue 和 Astro。

他们创建了 volarjs 组织来维护框架和相关的存储库:

volar.js:框架的核心

plugins[4] : 可以在 volar.config.js 或框架的 plugins 中使用

volarjs.github.io[5] :官方网站

language-tools-starter[6] :开始使用 Volar.js 构建语言服务器模板

ecosystem-ci[7] :用于运行 volar 生态系统项目的集成测试

pug-language-tools[8] :基于 language-tools-starter 的 Pug 工具

angular-language-tools[9] :基于 language-tools-starter 的 Angular 示例

svelte-language-tools[10] :基于 language-tools-starter 的 Svelte 示例

volar.js:框架的核心

plugins[4] : 可以在 volar.config.js 或框架的 plugins 中使用

volarjs.github.io[5] :官方网站

language-tools-starter[6] :开始使用 Volar.js 构建语言服务器模板

ecosystem-ci[7] :用于运行 volar 生态系统项目的集成测试

pug-language-tools[8] :基于 language-tools-starter 的 Pug 工具

angular-language-tools[9] :基于 language-tools-starter 的 Angular 示例

svelte-language-tools[10] :基于 language-tools-starter 的 Svelte 示例

这只是一个开始,目前还没有明确的长期路线图,但这里有一些计划在接下来探索和努力的主要方向。

Monaco 支持

Monaco 对 Vue 的支持目前由 monaco-volar 实现,Volar 团队计划在框架中支持它,因此所有基于 Volar.js 的语言服务器都可以轻松使用它。

支持 VSCode 以外的 IDE

除了 VSCode 之外,许多贡献者还为 Volar 的 Vim、Sublime、Atom、Emacs、Nova、Lapce 等其他 IDE 实现了语言客户端。拥有一整套的 IDE 支持可能有很大的参考价值,因为很少有人能够精通所有这些 IDE。

Volar 团队将寻找方法来利用这些贡献者的努力,以减少框架使用者在 VSCode 之外实现语言客户端的工作量。

除此之外,虽然 IntelliJ 没有一流的 LSP 支持,Volar 团队将研究是否可以将其与框架集成。

基于 Bun 的语言服务器

理论上,Volar 的性能只能无限接近,但不会快于 vanilla TS 语言服务器。但是,如果 Volar 语言服务器可以通过在 Bun 中运行而获得性能提升,它可能会改变游戏规则。

以前 Bun 运行时还不兼容基于 Node.js 的 LSP 服务器。Volar 团队会持续关注相关问题,待问题解决后进行重试。同样,所有基于 Volar.js 的语言服务器都将能够直接从中受益。

单体服务器

想象一个场景,每种语言都需要支持一些 Type 特性,那么每种语言的语言服务器都会运行自己昂贵的 Type 语言服务实例,这让情况变得变得糟糕,因为内存和 CPU 使用率都会成倍增加,而这种情况如今已经发生了。

如果这些语言服务器中的一些是基于 Volar.js 的,可能有一些方法让他们决定只激活一个语言服务器,然后将其余语言服务器的功能共享给激活的服务器,这样最终只需要在一个语言服务器实例而不是多个语言服务器中运行 Type 语言服务。

这也可以解决 Type 插件无法支持的一些用例。

基于 Volar.js 架构,已经非常接近这个目标,Volar 团队将为 Vue 和 Astro 语言服务器探索这个特性。

Rules API(内置 Linter)

在 ESLint 和 Prettier 一起使用时可能会出现冲突,而过去基于 Plugin API 的尝试并没有很好地避免这个问题。

Rules API 是避免不同 linting 工具之间冲突的另一种尝试,同时也确保性能和特性与 IDE 完美集成。

对于元框架,它们需要为 ESLint 和 Prettier 实现自己的解析器,但是有了 Rules API,它们甚至不需要这样做,因为可以重用 Volar 语言服务器的解析器。

因此,如果编写了一个 TS 规则,它将直接通过 Rules API 用于 Vue 的 <>和模板中的 Type 代码,而不需要额外的解析器。

这并不意味着需要重写所有规则;Rules API 只是一个 API,而不是一个单独的 linter,因此仍然可以重用 ESLint、TSLint 甚至 Rome 中的一些规则。

s API

对于 Vue,有 Vue-tsc 来检查TS代码,Volar 团队也想在 CI 中同时检查 CSS 和 Vue Template 代码。

s API 旨在公开语言服务器的格式化和 linting 功能,以便它们可以在脚本中使用,允许开发者在 CI 或 git 预提交 Hooks 中使用它并获得与在 IDE 中相同的结果。

原文: https://blog.vuejs.org/posts/volar-a-new-beginning.html

原文: https://blog.vuejs.org/posts/volar-a-new-beginning.html

[1]

Volar.js: https://volarjs.github.io/

[2]

vuejs/language-tools: https://github.com/vuejs/language-tools

vue源码逐行解析(vue3源码解析)

[3]

Vite: https://vitejs.dev/

[4]

plugins: https://github.com/volarjs/plugins

[5]

volarjs.github.io: https://volarjs.github.io/

[6]

language-tools-starter: https://github.com/volarjs/language-tools-starter

[7]

ecosystem-ci: https://github.com/volarjs/ecosystem-ci

[8]

pug-language-tools: https://github.com/volarjs/pug-language-tools

[9]

angular-language-tools: https://github.com/volarjs/angular-language-tools

[10]

svelte-language-tools: https://github.com/volarjs/svelte-language-tools

---END---

推荐↓↓↓

扫描二维码推送至手机访问。

版权声明:本文由我的模板布,如需转载请注明出处。


本文链接:http://60200875.com/post/67382.html

分享给朋友:

“vue源码逐行解析(vue3源码解析)” 的相关文章

游戏脚本网站免费大全(游戏脚本网址)

游戏脚本网站免费大全(游戏脚本网址)

今天给各位分享游戏脚本网站免费大全的知识,其中也会对游戏脚本网址进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、CS脚本比较多是网站有那些? 2、网络上有...

闪客百度网盘(闪客 下载)

闪客百度网盘(闪客 下载)

本篇文章给大家谈谈闪客百度网盘,以及闪客 下载对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、为什么我百度云盘突然看不了视频了,提示我要安装Flash,但我的电脑有flas...

魔域归来(魔域归来星魂等级)

魔域归来(魔域归来星魂等级)

本篇文章给大家谈谈魔域归来,以及魔域归来星魂等级对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、魔域归来伙伴6进7要多少果实 2、魔域归来伙伴6进阶7阶要多少 3、...

域名注册需提交的材料有多选题考试吧(域名注册需提供的材料有)

域名注册需提交的材料有多选题考试吧(域名注册需提供的材料有)

今天给各位分享域名注册需提交的材料有多选题考试吧的知识,其中也会对域名注册需提供的材料有进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、域名注册申请需要准备哪...

手机怎么打开本地网络权限(如何打开本地网络权限)

手机怎么打开本地网络权限(如何打开本地网络权限)

本篇文章给大家谈谈手机怎么打开本地网络权限,以及如何打开本地网络权限对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、苹果本地网络是什么意思 2、华为手机联网权限设置在哪...

5173账号交易平台和交易猫哪个好(5173好还是交易猫好)

5173账号交易平台和交易猫哪个好(5173好还是交易猫好)

本篇文章给大家谈谈5173账号交易平台和交易猫哪个好,以及5173好还是交易猫好对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、dnf交易平台哪个好 2、游戏交易平台哪...