当前位置: 首页 > 科技观察

Vue比React有什么优势?

时间:2023-03-13 03:29:02 科技观察

p{font-size:2em;text-align:center;}过去5年我一直是React工程师。我喜欢React,也喜欢开发React应用程序。我认为它是目前最好的UI框架之一。然而,React在这个领域有一些竞争对手,其中最大的是Vue.js。我玩过Vue.js一段时间,但我认为当时的体验已经过时了。因为我将深入研究Vue.js的工作原理以及它如何使我的工作更轻松。在深入研究Vue.js文档并使用它之后(注意:我绝对不是Vue.js专家),我惊讶地发现Vue.js在某些方面甚至比React做得更好。最后,我希望React能受到Vue.js的启发并开始这样做。1.不同的哲学Vue.js和React之间的一个主要区别是它们如何定位自己。从他们的官方网站直观地看,React将自己描述为“用于构建用户界面的JavaScript库”,而Vue.js将自己描述为“渐进式JavaScript框架”。React是一个库,而Vue.js是一个框架。我认为在很多方面这是这些UI框架表现不同的根本原因。我想强调这一点,以便您在阅读本文时牢记这一点。从历史上看,库和框架都专注于使它们做得更好,但框架在需求和功能方面更全面,而库则更少、更轻量级。2.Vue和React都有创建UI的组件。组件通常由3部分组成:UI(HTML)Behavior(JavaScript)Appearance(CSS)Vue.js的思想是使用单文件组件来编写一个out-of-the-覆盖所有3部分的组件盒子的方式。它看起来像这样:p{font-size:2em;text-align:center;}即使你不是Vue.js工程师,也能看懂这里的代码。React组件提供开箱即用的UI和行为部分,但样式在很大程度上不受限制:importReact,{useState}from'react';functionButton(){const[count,setCount]=useState(0);return(setCount(count+1)}>Currentcount:{count}
Clickme);}当然,React有一个非常活跃的社区,所以如果你想包含样式,你可以轻松使用Emotion或StyledComponents来填补样式空白,但是:它们不是内置的;您必须了解这些库才能使用它们。这与默认提供这些的Vue.js完全相反。3、官方支持的相关库任何足够大和复杂的UI应用都需要两个额外功能的支持:路由状态管理Vue.js官方支持的库涵盖了这两个场景:VueRouter和Vuex。这些库在Vue.js文档中明确提及,由Vue.js核心团队开发和维护。太奇妙了。它为刚接触Vue.js的工程师提供了解决问题的清晰方法,并让他们相信这些库会长期维护。拥有支持第一方的库不会限制社区解决方案,但它确实为新用户提供了入门解决方案浏览Vue.js的样式指南。它回答了Vue.js新手可能遇到的许多问题,并提供了有关如何编写“正确”且可访问的Vue.js的最佳实践。它分享来自社区的久经考验的最佳实践和模式。最重要的是:它由Vue.js官方维护和支持!这很棒!5.类和样式绑定上面提到,Vue.js内置了对样式的支持。此外,Vue.js本质上内置了类名。Classnmes是一个很棒的库,可以轻松连接和动态构建应用于HTML元素的CSS类名。而在React中,您需要了解库,然后安装它。在Vue.js中,这只是另一个内置功能:参考文档:Vue.js模板:

数据内容:data(){return{isActive:true,hasError:false}}呈现的UI:
很高兴有这个内置项目。Vue.js进一步支持内联样式。与React一样,Vue.js支持内联样式,但Vue.js比React更好的地方在于它可以自动为所需的CSS添加前缀。参考文档:使用:style时,需要添加以浏览器引擎为前缀的CSS属性。以transform为例,Vue.js会自动检测并添加相应的前缀。真正展示了框架控制自己的模板语法的优势。6.插槽React中的一切都是道具。如果你想在React组件中渲染多个子节点,只需添加多个props:functionNav({left,right}){return(
{right}
);}functionApp(){return(
}right={}/>
);}但是如果内部内容庞大的话,虽然可以很好的工作,但是就有点尴尬了。Vue.js采用插槽方法,我认为它的API更简洁。

这里可能是一个pagetitle

主要内容的一段。

还有一个。

Here'ssomecontactinfo

Vue.js使用插槽(受WebComponent草案规则的启发)来清楚地指示内容在组件内部的位置。Vue.js为重复任务提供快捷方式。在这种情况下,可以使用插槽简化上面的示例:

Heremightbeapagetitle

Aparagraphforthemaincontent.

Andanotherone.

Here'ssomecontactinfo

7.指令修饰符我觉得是Vue.js指令的功能修改器真的很酷。在讨论指令修饰符之前,让我快速解释一下什么是指令。指令v-是您在Vue.js模板中使用的“带前缀的特殊属性”。指令的作用是在表达式的值发生变化时以响应方式将副作用应用到DOM。例如://If"seen"variableisfalsethenthisptagisnotrenderedNowyouseeme

事件指令:......还有其他更多说明。指令也支持修饰符。使用通用指令执行通用操作对开发人员非常友好。对于事件处理指令(v-on),有很多修饰符:...还有更多!如果你想在React中做这样的事情,你可以创建一个辅助函数或一个自定义组件。但与指令修饰符的方式相比,不够简洁。我很好奇是否有人可以开发一个BabelJSX超集,这样就可以编写这样的代码:);这超出了React的范围,但我仍然认为这将大大提高生产力。还有更多的Vue.js修饰符。例如,键修饰符:太酷了。8.表单输入绑定在将数据绑定到输入元素时,v-model指令具有非常有趣的特性。从文档中发现v-model内部使用不同的属性,针对不同的input元素发出不同的事件:text和textarea元素使用value属性和input事件;复选框和单选按钮使用选中的属性和更改事件;select使用值作为属性和更改事件。这样做的好处是你不需要关心数据是如何同步的,你只需要关心它是如何为你服务的。让我们比较一下React和Vue.js是如何绑定的://Input//////////React//Vue.js//CheckboxesandRadiobuttons//////////React//Vue.js//Select//////////React//Vue.js注意到区别了吗?现在,我要为React辩护,它鼓励(并要求)您了解数据的实际设置方式和变化方式。这意味着如果你曾经用纯JS编写过表单,你就会更好地了解它是如何工作的。与Vue.js不同,它为您抽象了这些功能。9.自定义指令与任何优秀的框架一样,您可以在Vue.js中创建自己的自定义指令。Vue.js确实专注于“代码重用和抽象的主要形式是组件”,但这里有一个很好的例子,它使用自定义指令通过v-focus自动关注挂载的元素:constapp=Vue.createApp({})//注册一个名为`v-focus`的全局自定义指令-focus/>在React中,你可以编写一个自定义组件来做同样的事情,但是对于这样一个简单的任务来说有点重。10.用TypeScript编写最后,Vue.js最近正在用TypeScript重写。这意味着他们对TypeScript的支持是一流的,因为框架本身是用TypeScript编写的。React是用什么编写的并不重要,我认为这没有太大区别,但看到Vue.js也用TypeScript编写仍然很高兴。总结我是不是要放弃React并开始专门使用Vue.js?不,我仍然非常喜欢React作为一个“库”,坦率地说,我非常擅长编写React程序。然而,我很乐意看到React从Vue.js中汲取一些灵感并融入其中,如果我只能选择本文提到的几点之一,我肯定会选择风格指南。我很想看到官方支持和维护的React风格指南。希望我让你看到一些你不知道的关于Vue.js的东西!我很确定我真的很喜欢Vue.js的哲学!