用了一周 Vue 的吐槽

#1

唉, 写不了长的文章了, 只能写写帖子. 上周很纠结不会写 Vue 的事情, 工作压力下还是直接度过了,
刚开始的三四天报错非常难受, 后面逐渐习惯了, 宁愿写得难看也不去写奇怪的代码,
加上没有用全家桶 vuex, 也用公司的组件库屏蔽了复杂逻辑, 整体很好, 大致吐槽

调试

Vue 是用 vue-loader 从 .vue 文件的 single file component 写法编译过去的,
怀疑是 Webpack 没配好, 我的 Vue 代码都是 eval 执行的, 报错没法看,
很难定位报错, 开了 pause on caught error 也还是很吃力, 后来就放弃了,
然后就靠着各种打印配合 vue-loader 给出的错误信息来调试,
这东西做得有点厉害, 报错位置还是比较详细的, 虽然不能精确到断点, 但是很详细,
日常的场景基本够用, 所以也算是可以了…

Vue DevTool 我装了, 基本没啥用, 虽然很强大, 但是超慢, 我后来干脆关了…

表达能力

Vue 的模板语言语法基本接近 Vue 0.8 当时用过的 MVVM 的写法,
我个人觉得表达能力挺局限的, 我用 cljs 各种抽象习惯了, 开始很难受,
也是因为业务简单, 而且有组件, 所以没遇到头疼的事情过,
所以遇到有不好写的就用 computed 或者 methods 辅助, 感觉也还行,
像是列表或者内容转换的地方, 不能直接用函数这样强大的感受, 有点不开心.
有点感觉就是明明能用强大的灵活的写法, 还得人肉编译到 MVVM 写法.

另一个常用的是跨组件通信, 刚开始我晕了一阵, 然后想想算了,
后面就用 this.$emit 强行模仿成 React 的套路了, 似乎也没问题.

vue-cli

用这个工具的感觉是相当溜的. 一个命令生成 Vue 项目, 直接就能玩了,
不得不说功能做得很细, lint 也完善, 工程化的代码的, 基本上照本宣科为主,
热替换会刷掉组件状态, 感觉总体是还好, 不过有那么一点不舒服.

这个也可以和 react-create-app 对比, 我之前没有用过, 用了一下也觉得不错,
因为都是配好的 webpack, 简单的页面基本没遇到问题,
不过页面热替换不够溜, 比 vue cli 的热替换还差, 不开心. 但是写 React 感觉挺舒服的.
而且 Prettier 在 Vue 不能用, 在 React 这边真的是有如神助啊!!!

还有跟我自己基于 ClojureScript 的脚手架对比… 我的细节做得没那么好,
但是比如说代码检查做 head up display 这种, 效果还是差不多的,
另外 Respo 专门为热替换设计了, 所以热替换是不会丢状态的, 就是这么吊,
初次之外还有个 server rendering 的问题, 或者说编译时渲染, 我也很有用,
在 React 或者 Vue 的脚手架使用当中都有不足, 当然, 我这边用起来啰嗦很多.

感想

总体感觉工程化的代码跟我自己用 ClojureScript 玩的项目侧重点差很多,
对付功能的时候我希望有现成代码可以参考, 而且调试工具强大,
大概 React 合适一些, 写着虽然烦, 但是抽象能力并不缺, 而且报错很容易定位,
Vue 就是编译器不够强大, 类型有错或者怎么, 遇到有调试不出来的时候, 会很郁闷.
有函数那种抽象能力, 有种自由的感觉. 写 Vue 的时候, 总觉得被框架管着.

Reason 现在不成熟, 以后恐怕免不了学 Reason 的. 早做准备了.
我厂用 React 的人太少, 激情不起来…

1 Like
#2

react VS vue 总冠军争夺战

#3

感觉你们终于要统一技术栈了:joy:

#4

我还在看到底要用啥。。。
难以决断,先都看看再说吧