Vue Vine:创造另一种书写 Vue 组件的方式

2023-08-0509:30:20WEB前端开发Comments844 views字数 904阅读模式

Vue Vine:创造另一种书写 Vue 组件的方式文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

Vue Vine:https://github.com/vue-vine/vue-vine文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

在社区中,有很多帖子讨论过希望有一个支持在单个文件中编写多个 Vue 组件的解决方案。Vue Vine 因此而生。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

Vue Vine 旨在提供更多管理 Vue 组件的灵活性,它并不是要取代 Vue SFC,而是作为一种并行的解决方案。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

为什么是另一种风格?

我看到很多关于支持 ”一个SFC文件中的多个组件“ 的讨论,但说实话,SFC是为每个文件一个组件而设计的,相关的工具链也是基于这个逻辑,并在Vue的开发过程中不断迭代。因此,基于这个概念,直接支持一个文件中的多个组件显然是不合理的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

通过几个Twitter帖子的调查,我发现确实存在着在一个文件中编写多个组件的普遍需求。于是我开始探索是否有另一种语法或组织方式可以最适合Vue现有的编译工具链,并利用现有的成就,同时为用户编写组件创造更大的灵活性。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

我相信大多数像我这样参与Web前端开发的程序员都不能 ”从上到下“地编写UI视图,而是采用 ”从下到上“ 的方式。换句话说,他们一开始就写长的组件,然后再砍掉可重用的组件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

我是这样问大家的:“编写Vue时,你最怀念React的什么?”文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

在Vue和React的开发经验比较中,最明显的区别是组件的组织形式。由于JSX只是JavaScript函数,所以你可以很容易地开始编写一个新的组件。很多人回答说JSX实际上是他们喜欢的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

Vue对JSX也有不俗的支持,然而,JSX的问题是它太灵活了,它不能提供足够的编译时信息让Vue进行优化。但函数风格很好,我们确实喜欢它。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

那么......为什么不尝试用一个函数来创建Vue组件,而把 script setup 逻辑和模板写在里面?文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

这就是 Vine 的诞生过程。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

Vue Vine:创造另一种书写 Vue 组件的方式文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

为什么它可以实现?

潜心研究了Vue SFC的编译结果后,你会发现它实际上被转化成了一个组件对象。所以,编译一个组件和编译多个组件并没有很大的区别,我所需要做的只是创建多个组件对象。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

模板是基于一些来自用户脚本的绑定元数据进行编译的,这在模板中实现了“自动解包”。一些静态部分可以被自动吊出来进行优化。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

所有这些处理都是由 @vue/compiler-dom 包提供的。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/gcs/52663.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/gcs/52663.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定