@
epiloguess #42 我差点信了你的话,跑去看了一下 vue 的最新文档,第一页进去就把我给整笑了。
首先左手边上面上来就给我一个 toggle 的强提示,说什么 composition 模式啥啥的,属于是还不知道怎么回事,上来就灌入一个没有前提的知识点。
然后页面内容一上来就给我整上两种编写组件的写法,就是我还没想着吃茴香豆呢就告诉我茴字有好几种写法了。关键是又告诉我说两种写法都一样的,你自己选就 ok 。既然是一个 opinionated 的框架,那就给定一个推荐用法不是更好吗?摆出来两种写法的意义是啥啊。
两种写法吧,也没有任意一种写法支持 0 打包。说真的就这一点,当初 vue2 的文档就写的极其糟糕,以至于看完文档照做我也没有跑起来代码。好的一点是至少如今写明白了写 vue 就是要 100%使用打包器,当然需要使用打包器也不是缺点,实际生产不可能有人不打包。
最后不管哪种写法,给 script 标签加 setup ,给 html 标签上添加魔法,让纯代码的部分有生命周期的概念但是又不明确说明是否有生命周期。这些如果还不叫心智负担,那我不懂什么叫心智负担。对比 react 的两种组件编写方式来说,react 都说的更明白。尤其是 functional component 的写法下,html ( jsx )的学习成本远远小于任何有自定义语法的模板语言。
另外说一小点,vue 给的第一段代码,我一个长期写 typescript 的人,其实根本不理解怎么能在 template 里面正确的引用 count ,因为对一个长期相信类型系统的人来说,这里是一定会被 ts 的 language server 给报错找不到引用的。所以说 2025 年了,一个极其先进的框架,还在隐式的推崇无类型系统优先,我觉得也是一个很大的心智负担。
最最后,关于心智负担我觉得还有一点很重要的是文档是否优秀。react 整个从概念到文档都非常清晰易懂,概念也很少,黑魔法更是几乎没有。你再去看看 angular 的文档,你就知道什么叫到处都是魔法。你再对比你推崇的 vue ,就会发现 vue 其实和 angular 是一个体系的,大面上“你这么做就行了,很简单”,实际上“这里有一个这样的语法,用来解决一个特定的情况”,但是不一会儿呢还有“这里还有一个这样的语法,用来解决下一个你可能会遇到的情况”。这一点在 solidjs 上也有体现,就是学起来让人觉得很头大,要解决一些实际的问题需要太多的细节。