从React迁移到Vue,两年使用感受总结。使用新的框架和库总是令人兴奋,但也充满压力。即使经过几次评估,您也永远不知道以后会遇到什么惊喜。我与Vue.js的蜜月结束了。在几乎每天都使用Vue2年之后,我终于决定写下它。注:以下内容纯属个人观点。Vue.js的一个优秀部分是移动性。在前端世界中,数据绑定是一件大事。我们没有像使用jQuery那样对DOM进行微观管理,而是专注于数据。Vue使用双向反应式数据绑定系统来处理这个问题。为了实现这种动态性,Vue为状态中的每个变量添加了一些getter和setter,以便它可以跟踪、更改和自动更新DOM(咳咳this.setstate()咳咳)。这种方法并不完美,我们稍后会看到。自己驱动使用Vue,你不需要使用像MobX或响应路由器这样的非官方包来处理应用程序的关键部分。Vue提供了VueRouter和Vuex——一个受redu启发的反应式中央状态管理器。它们本身就是很棒的库,但它们是为Vue定制的,这让它们变得更好。速度Vue真的很快。也许不是最快的,但它的性能对于绝大多数Web项目来说都是一流的。您上一次需要每秒渲染和更新数千个DOM元素是什么时候?HTML模板这是JavaScript开发人员中一个有争议的话题。无论您的喜好如何,HTML模板已经在多种语言中磨练了几十年,是在Vue中编写动态标记的首选。而且,嘿,Vue也支持JSX。其他好东西HTML、CSS和JavaScript单文件组件。轻的。大约20KB(缩小+gzip)。高度可扩展(混合、插件等)。优秀的文档(下面提到的一些例外)。它可以逐步访问,甚至可以用作jQuery的替代品。便于使用。Vue.js中一些让人“嘿嘿”的组件模板,从React迁移到Vue,我仿佛倒吸一口凉气。没有更多的bind(this)或setState()无处不在。哎呀!但是过了一段时间,我开始质疑Vue的组件语法的有效性。Vue组件是用对象创建的,这里是一个定义组件函数的例子:.Vue中几乎所有的东西都有自己特殊的语法和更多的模板文件。相比之下,Marko也有同样的东西,更干净:class{increment(){this.state.count++;}}我这里的观点不是用class或者不用class,而是Vue用的是任意对象结构而不是Not一种语言特征。如果你认为我在寻找什么,我不会怪你。Vue还提供了基于类的语法,但它实际上更多是事后才想到的。社区更像是一个聊天室。Vue社区的人喜欢使用一个叫做Discord的工具来聊天。这是一个只存在于游戏社区的聊天工具。如果你有问题,聊天可能是你最好的选择,因为官方论坛是一片荒地,但为什么,你害怕在Github上提问?聊天很乱,主要问题是聊天内容不是搜索引擎索引。同样的问题(及其相关的讨论)必然会一遍又一遍地重复。这种使用聊天来提问的趋势正在困扰着开源项目,我认为它需要停止。这种聊天没有集体学习的效果。没那么神奇。只要你不偏离太远,你就不会惹上麻烦,但一段时间后,你可能会发现Vue周围有很多“如果”和“但是”。一些例子:反应系统只会在特定条件下跟踪变化。不要指望它能为您提供任何您想要的东西。通常,您可能希望尽可能地简化数据以避免麻烦。当然,所有这些都在文档的细则中进行了解释。转换系统不适用于列表。您实际上需要使用,它的工作方式略有不同,并在DOM中引入了新元素。同样,有些事情你认为是一件定了的事情,但你发现你必须自己去执行它。如果您需要组件实例中的非反应状态,那么您正在进入未知领域。等等不要误会我的意思,这些都不是主要问题,但似乎每次您开始弄脏手时,都会出现另一个小烦恼。Vue.js中的不良部分不清晰的架构模式举个例子:在组件中处理API请求还是在Vuex中处理更好?本文档提供了如何在Vuex中处理API逻辑的示例。甚至还有一个漂亮的彩色图表:这是否意味着验证逻辑也适用于Vuex?状态管理器现在会开始调解所有应用程序逻辑吗?这些都不是显而易见的。大多数人喜欢将非状态逻辑插入到Vuex动作中,或者更糟糕的是,直接插入到组件中,因为Vue主页上有一个视频说:回答我原来的问题:API逻辑不应该放在Vuex或组件编写中。在一些官方代码示例中甚至有一个很好的示例来说明如何执行此操作。结论Vue的使用率一直在上升,我怀疑这种趋势会很快停止。它的受欢迎程度远不及React(至少在中国以外),它仍然需要与Angular争夺遥远的第二名。过去,我认为Vue是一个实用的库,而不是React过于理想化的设计(“我们是纯JavaScript!”)。我仍然认为这是一个很好的比喻。另一方面,我现在觉得Vue的实用主义需要在用户层面更加优雅、专注、优雅和简洁。使用2年之后,我对Vue的印象是正面的。我仍然认为这是正确的决定——将我的团队从React带到Vue。不是因为Vue更好,而是因为它更适合我们。Vue做它想做的事,它在其他人失败的地方取得成功,但是,今天,我认为Vue客观上并不比您想象的更好或更差。这就是我要说的。附录:VueCLI我没有在本文中包括VueCLI,我想解释一下原因。VueCLI是一个非常方便的构建Vue项目的工具。在即将推出的新版本3中,它会更好,因为它是一个完整的项目管理解决方案。然而,方便总是有代价的,在我看来,这里的价格是不合理的。Webpack并不像很多人说的那么难,创建自己的初始配置可以减少大部分配置时间。当这样做的成本如此之低时,制作自己的定制产品就更有意义了。
