使用React四年后转而使用Vue,是一种什么样的体验?

本文转载自公众号“读芯术”(ID:AI_Discovery)。

武隆ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联公司的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18982081108(备注:SSL证书合作)期待与您的合作!

过去四年来,笔者都是用React框架工作,最近开始使用Vue了。尽管两者有一些概念上的差异——Vue受到了Angular的影响,但在React框架下完成的工作同样适用于Vue。

笔者觉得Vue整合了Angular和React的精华部分。关键理由之一就是:Vue框架的创建者——尤雨溪,曾利用React来获得灵感,开发新的框架。

“我想,如果我只提取React中最喜欢的部分,不考虑其他任何概念,来构建一些轻量级的框架,会怎么样呢?同时,我也很好奇React的内部实现是如何进行的。所以我开始尝试着复制这一最小功能集,比如声明式数据绑定。我就是那样开始构建Vue的。”

——尤雨溪

这篇文章将重点关注两种框架的差异。首先,来看看一些事实:

快速比较

  • React是库,Vue则是完整的框架
  • 都能快速运行,都是轻量级前端框架
  • 都有一个组件式系统架构
  • 都使用virtual DOM
  • 都可以放进一个HTML文件中或成为更复杂的Webpack设置模块
  • 都有独立但通用的路由器和状态管理库

最大的不同在于,Vue通常使用HTML模板文件,而React完全是使用JavaScript库。Vue也有可变状态,以及用于重新呈现的自动化系统,这被称为反应性。

组件式系统架构

React和Vue都遵循基于可重用组件的方法。

(1) 比较React组件和Vue组件

React和Vue都提供component方法,但是它们完全不同。这是因为React将组件定义为类,而Vue将组件定义为对象。Vue.component全局注册组件,而React.Component充当组件的基类。

< ComponentName />是一个在模板中直接使用的类名

Vue中的组件是普通对象,无须扩展Vue。

Vue中相同的组件和模式:只是一个对象,必须包含在Vue应用的components值中才能显示。

尽管拥有基于组件的方法,两者却大不相同。

(2) 比较React JSX和Vue Templates

React的renderProp方法与JavaScript相同,所以你在模板里所做的一切都和在JavaScript中做的一样。Vue依赖于HTML模板,所以它包含了一些指令。这些指令在设计上与AngularJS非常相似(事实上几乎一样:v-if, v-for, v-show等)。

生命周期方法

Vue中的组件具有与React方法相似的生命周期方法,试着一一配对:

  • constructor → created
  • componentWillMount → beforeMount
  • componentDidMount → mounted
  • componentWillUnmount → beforeDestroy
  • componentDidCatch → N/A
  • shouldComponentUpdate → N/A
  • setState → N/A — 直接设置属性即可

组件状态和数据

在React中,有组件state。在Vue中,有data。

设置初始状态

React组件

Vue组件

更新状态

React使用setState方法

Vue只是将新值赋予该属性

条件渲染

React通常使用三元操作在一定条件下呈现内容

Vue引入了v-if指令,作用相同。

用循环迭代和渲染

在React中,通常对值进行map并返回一个字符串,该字符串包含希望的每个element值。

在Vue中,会使用v-for directive

生态系统

Vue比React有更多的“官方”库,这意味着它与核心框架一起得到了官方的支持、维护和发布。由于还不够成熟,Vue没有React那么多的社区支持库。

对照表

总之,Vue和React都是创建复杂网络解决方案的强大工具。他们足以让你得心应手地完成任何任务。无论哪一个,都是正确的选择。

文章题目:使用React四年后转而使用Vue,是一种什么样的体验?
分享路径:http://www.shufengxianlan.com/qtweb/news21/202721.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联