辩论:VueJS vs. ReactJS
辩论:VueJS vs. ReactJS
原文:https://medium.com/hackernoon/debate-vuejs-vs-reactjs-9d2a8867b69b
有了这么多新的库和框架,很难跟上它们的步伐,如果你能决定哪些值得花时间的话。
让我们来看看人们是怎么说的:

“与 Vue 合作。JS 是一个很大的乐趣,我发现学习曲线非常浅,然而,这可能纯粹是基于我的经验,正如我以前提到过的,我过去曾与一些人一起工作过。
默认的模板结构与 Angular 的工作方式非常相似,因此来自该背景的开发人员可能会比使用 React 更快地掌握它。我真的不能不学习 React,看看它是否会影响学习 Vue.JS 的容易程度。”
Reme Le Hane
“比起 React,我更喜欢 Vue.js 。Vue.js 是 Javascript 领域的新生事物。所以我想说学习的简单性可能是第一位的。简洁是其设计的一部分。
- Vue 更简单,它采用了 Angular 1 和 React 的很多概念。您可以在没有任何构建系统的情况下使用它——只需将它包含到 HTML 文件中。
- React 更大,也更复杂一点(比如在设置方面)。
所以如果你想只是想学习一个库,没有一个构建系统选择 Vue。Vue.js 非常平易近人,为如何处理各种事情提供了更多的结构。如果你还不确定,两个都试试。此外,点击此处阅读更多关于 ReactJS 与 Vue.js 和 AngularJS 之间差异的信息。”
凯瑟琳·丽雅
“要回答你的主要问题,我认为 Vue.js 是更好地了解 React 系统的一个很好的方式。但是,你可能还没看完指南就爱上 Vue.js 了。让我告诉你,整本书都值得一读。找一个周六,尽情享受吧!
在你进一步阅读我的回答之前,我强烈建议你去看看 Vue 的框架对比 。它非常周到,考虑了许多重要的因素。
你想为哪个(些)平台开发?选择你的毒药。
- React 几乎适用于任何平台。无论是 web 还是原生开发,React 都已经覆盖了你,并且正在两个方向上走向成熟。好处是当涉及到 UI 开发时,在任何上下文中都是一个灵活的开发者。它甚至进入了虚拟现实。
- Vue 2.0 也在走向原生。 Evan 和他的团队正在与阿里巴巴合作创建 Weex ,这将允许与 React Native 相当的原生渲染。Vue 2.0 现在主要专注于 web 开发,但也支持其他平台的发展。根据 Evan 的最新 Vue 博客文章,2017 年将是 Weex 的重要一年。
您希望多快开始创建?为什么不是今天,而是几周?
- React 有一个陡峭的学习曲线。它的文档和围绕某些概念的术语有点非传统和杂乱,其中 Vue 的指南、属性名称、设置过程等。所有这些都非常熟悉,并且符合更广泛的 HTML、CSS 和 ES6 标准。谢天谢地,这两个框架的社区都在蓬勃发展。你可以找到大量的资源来开始。(资源: React / Vue )
- 我面对的最大的障碍是理解构建工具链:Webpack、JSX、我的文本编辑器插件等等。
- 然而, Vue 不需要 Webpack ,或者其他任何东西。您可以使用您最喜欢的包管理器或 CDN 快速包含这个库,立即编写 ES5 应用程序。这意味着你可以立即在 CodePen 和其他代码共享环境中使用 Vue。
- React 最近推出了 create-react-app 用于入门。你可以将它与 Vue 的命令行工具进行比较。
在专业领域……
- Vue 已经被 GitLab ,Laravel,PageKit 等大牌采用。
- Vue 仍然感觉像是我开发圈里的新成员。然而,在我的公司(IHS Markit)的许多开发人员已经开始采用 Vue,在考虑 Angular 之后,反应非常强烈。
- React 非常受欢迎,它存在的时间更长。很可能更多的企业使用了 React。如果你现在正在求职,请记住这一点。
- 在过去的几个月里(2016 年秋季),我看到了很多文章在流传:“为什么我们选择 Vue.js 而不是 React 和 Angular……”。随着越来越多的人意识到它的易用性,Vue.js 正在迅速获得关注。
开始进一步 Vue fanboyism… 状态管理和路由都包括在内!您已经了解 Flux/Redux,下面是 Vue 提供的功能:
- Vuex 是 Vue 的 Flux/Redux/Elm 启发的实现,专门为使用 Vue 的反应性系统量身定制。它的突变、getters 和动作系统非常协调,非常容易与您的组件集成。不过,如果你更喜欢使用 Redux,Vue 也可以使用 Revue 。无论哪种方式,知道如何使用状态管理系统都是一个很有价值的模式。
- 如果你需要 URL 路由和参数,vue-router 非常简单和强大。看看文件就知道了。
其他值得注意的事情……
- Vue 的文档是一个梦。我无法告诉足够多的人它的指南和 API 参考有多棒。尤雨溪(作者和项目负责人)有一种用通俗的语言表达现代发展的方式。即使对于经验丰富的开发人员来说,这也令人耳目一新。
- 编写单文件 Vue 组件感觉如此自然——从那以后我再也没有回头看。这确实需要 Webpack,但是不用担心,Vue 提供了一个非常方便的命令行工具来帮助你用很少的设置生成准系统项目。如果你喜欢 Browserify,它也可以。如果你愿意,你可以写你自己的 CLI 模板!提供的模板非常灵活。
- Vue 2.0 支持 服务器端渲染 ,帮助你进行 SEO,让禁用 Javascript 的人也能看到你的网站。
最后,Vue.js 给我留下了深刻的印象,并且我还会继续使用它,这就是它杰出的社区、Evan 和他的贡献者的专业精神、它的易用性以及它与 Web 组件标准的一致。我被这个项目的成功震惊了,能够在短时间内创建我所能想到的任何前端是多么令人愉快。"
安迪·莫斯金
“我在这里也要插话。我花了大约一年时间和 React 一起工作。在过去的几个月里,我最近换成了 Vue,从那以后我再也没有回头。关于 Vue 的一些事情让我迷上了 React,即:
- JSX——我对 JSX 恨之入骨。每次打开项目,我都要花上几秒钟,甚至几分钟的时间来接受这样一个事实:我正在寻找的组件的 javascript 由样式、传统的 Javascript 方法和 UI 元素组成,所有这些都被粉碎成一个组件化的野兽。它很快就过时了。
- 传统 html 属性的重命名— 传统 HTML 将类和样式作为元素的属性。哦,好吧,React 也可以做到这一点,你所要做的就是确保所有的类属性都被称为 className,并且样式属性不再有字符串值。想象一下,尝试基于您购买的现有主题创建一个网站。把它换过来反应真的感觉像把刀子插进你的眼球。有了 Vue,现有的 HTML 就可以了。你想让它“反应”吗?继续,但不需要像在 React 中那样。
- Bundlers required —所以 React 只是 UI 层,对吧?他们是正确的;你甚至不需要 webpack 或任何其他捆绑器。但是试着不用它来建造任何实体的东西。你会过得很艰难。您开始左右拉动启用功能的包,这些包的所有指南都假定您有 webpack。如果你要发送“Hello World ”,那么只使用 React 就可以了。其他的,开始阅读你所有的捆绑器。"
约苏利文
“我使用 Angular 1 一年多一点,然后改用 React。我看了 Vue 几次,但从来没有真正用它做过什么,也就是说,我只听说过关于它的很棒的事情,从它的外观来看,它很容易上手。
我选择 React 有三个原因:
- 这是目前最受欢迎的网站:这很重要,最受欢迎意味着它拥有最多的在线资源,更好的工作机会,更有可能取得长期成功(除非他们像谷歌那样做 Angular 1)。
- 这是通用的:有一些库允许你使用 React 编写移动甚至桌面应用程序(虽然我还没有亲自尝试过构建桌面应用程序)。Vue 也将推出自己的混合移动框架,但即使它真的推出了,考虑到 RN 的领先优势及其社区的规模,我也非常怀疑它能否很快赶上 React Native。
- 这很复杂也很难学:我不同意这里大多数人的观点,我认为这不仅是学习 React 的一个好理由,实际上也是我喜欢 React 的原因之一。学习 React 会让你成为更好的 javascript 开发者。做出反应很困难,因为:
- 它使用了很多中高级的 JS 概念。要有效地使用 React,需要对对象、关键字“this”和一些函数式编程概念有透彻的理解(如果您使用 Redux,最后一个概念更相关)。如果你还没有学过 ES6,它很可能会强迫你去学。
- 它只是您需要的工具集的一部分,所以您必须依赖其他库,如 Redux。这在开始时可能是痛苦的,但它教会你如何将不同的库混合、匹配和连接在一起。它还为您提供了一个优势,您可以根据自己的需要定制工具,如果您只想在应用程序的某个部分使用它,甚至可以将 React 放入 Angular/Vue 应用程序中。
- 它通常与 webpack 之类的构建工具一起使用(尽管实际上并不需要它们)。Vue 在没有构建工具的情况下更容易设置,但是几乎任何真实世界的应用程序最终都会使用构建工具,所以如果您仍在学习,只想跳过麻烦,更快地到达构建环境,这只是一个优势。即使是这种情况,你仍然可以通过使用像 create-react-app 这样的项目生成器来跳过所有的配置,直接进行构建。
前端开发的问题是 JS 生态系统非常不稳定,框架不断变化。所以我认为,与其在那里寻找最简单/最强大/最流行的框架,不如学习一些对你作为开发人员长期有用的东西(尽管 React 也涵盖了最流行的东西)。即使 React 最终变得过时,我也不会对学习它感到任何遗憾,因为当我开始学习时,我对 Javascript 的了解远远超过我对它的了解。"
艾哈迈德·瓦格迪
“这些天我很少上网,主要从事后端数据处理、网络 I/O 和分布式通信。
一年多以前,我想要一个实时的 web UI 来可视化我在服务器端的一些数据,我试图用 SignalR 来做到这一点。我回顾了一些流行的框架,带着一个非常简单的想法“我能阅读‘入门’并在 15 分钟内完成一些基本的工作吗?”。
我最终选择了 Vue,主要是因为它使用简单的对象作为模型,我可以直接将我从 SignalR 获得的东西传递给它并显示出来。我尝试的几乎所有其他东西都有某种类型的数据包装器/代理,这意味着您必须运行一些映射练习才能让模型工作。我接近决定使用秘银,但是当我发现 Vue 的时候,我更加喜欢它了。我其实真的很想做 React,但 Vue 是如此平易近人,我不能证明花额外的时间学习 React 是正确的。
然而,真正的考验是在几个月后,当我去修改我简单的调试 UI 并添加更多的功能时。我几乎立刻就学会了,甚至做了一些相当实质性的改变。
对比我的经验,比如说,余烬。我们有一个用 Ember 编写的大型应用程序,每次我试图做我认为应该是简单的更改(在几个月没有接触它之后),它花费的时间是我想象的 5 倍,我最终花了大部分时间与它斗争,然后意识到我忘记了你必须修改的 5 个地方之一,以引用额外的依赖项或其他一些同样琐碎但令人恼火的细节。
你可以在几分钟内学会 Vue 的基础知识,并在几个小时内变得非常熟练。这不是很多框架可以宣称的,这是一个被严重低估的好处。"
格雷格麦克
本帖原载于Bootstrapbay博客—https://bootstrapbay.com/blog/vuejs-vs-reactjs/
乡亲们,你们怎么看?请随意加入这场辩论,不要忘记分享这一点,以便其他人可以了解这一点。



