有没有 React 转 Vue 成功的同学, 分享一下成功经验?

#1

这边有个转不成功的… 手动二哈

#2

不一样嘛。我现在就在用vue和laravel 搞个旅游项目.

#3

个人感觉没啥区别

#4

感觉略忧伤, 我在 Vue 0.8 的时候用过 Vue, 当时 Vue 组件间通信很不完善, 于是刚好转了 React,
当时单向数据流的概念刚出来, 当然现在 Vue 也有单向数据流了, 相似度很高.
在公司我也试过 Vue 新的版本, 毕竟我厂是一个 Vue 的大厂, 思维方式很难扭过来.

在 React 和 ClojureScript 当中, 大部分的抽象工作都是通过语言本身来完成的,
比如说处理事件, 用的是回调函数, 比如说列表, 用的是 map 函数,
比如说值的修改换转换, 用的是纯函数, 另外修改状态也用的带副作用的函数,
所有的抽象都是用函数进行抽象的, 意味着显示在 Debugger 当中就是 js 函数的断点,
而且 ClojureScript 的话, 或者 React 的 Flow 编译器, 还有编译过程的检查,
也就是说, 用 React 能较好地使用语言级别提供的灵活性和调试工具.

这在 Vue 当中很大程度上是残缺的, 或者说是故意的, 甚至 Vue 就不鼓励函数,
Vue 当中主要还是 DSL, 甚至为了方便对大量的概念进行了封装,
结果就是大量的都需要学习 DSL 了解对应的用法, 依赖 DSL 进行调试,
如果之前没有的先入为主的想法, 这其实还不错的, Vue 的生态比较完善,
而且从 1.x 开始一点点熟悉加入的语法, 整个也还好, 文档也做得很细.

在我遇到的问题是, 我原来用 React 基本上依赖函数能进行大量的抽象,
甚至在 ClojureScript 当中, 有意识在隔离着副作用, 高阶的抽象我都很放心,
到了 Vue, 这种基于函数的强大的抽象能力被限制住了, 文档还是其他, 都推荐 DSL,
而且所以 data 都通过 Proxy 进行了处理, 我早先的调试习惯也用不过来,
这种感觉知道么, 就像是喜欢跑步跳跃的人, 被强行穿上了轮滑鞋,
在熟练的平地上确实非常非常溜, 比走路快多了, 可是我经常要跳啊爬啊, 很忧郁.
我原来学的那么多函数的抽象能力, 到了 Vue 我是新手, 而且是思维惯性很大的新手…

我最近工作原因打算深入 Vue, 虽然跟 Vue 作者都有过一些谈话, 但现状就是挺尴尬,
尴尬啊, 我学 Vue 甚至比起一般的前端都要慢, 我脑子里会担心很多事情,
我从前用 React 写大规模应用的很多经历, 会不断在我的脑海里闪现,
于是看到 Vue 代码我常常会担心很多东西, 比如说跨组件通信多了怎么之类的,
而且我自己也造过框架, 大量思考花在上面, 看着 Vue 的文档还会去想更多的东西.
总体下来, 就算新人吧用简单粗暴的写法都能改完需求了, 我还处在压力当中…

当然多花点时间是可以扭转过来. 而且熟练之后大概跟别人一样, 但我由不肯放弃函数式的知识,
导致我想事情的时候就有很多的岔路, 我经常会在写东西的时候犹豫,
如果是 Respo, 框架代码是我自己设计的, 我都能停下来去改框架,
可是 Vue 呢, 遇到不认可的点, 首先是我思维方式不一样, 总不能要求对方去改,
而且就算能改, 调试工具等等一大摞的工作量都很难跟上, 还导致更多的困惑,
现在 Vue DevTools 我用了下, 算是惊艳了, 但还是慢, 跟 Chrome DevTools 差距极大.
感觉 Vue 跟 React 都想着自己打造一整个栈, 但是 Vue 走得更远, 反而更不成熟.

我觉得 Vue 太照顾那些研究语言本身不多的那些人了, 那个模板的写法,
用 React, 会不断接触高阶函数, 不可变数据, 异步抽象, 操作合并, 各种编程的概念,
但是在 Vue 社区倾向于封装好直接用, 这个好不好呢, 也看人吧,
封装了场景会局限, 特定情况下便利性会增强, 对应的开发效率也会提高,
往语言抽象走吧, 灵活度提供功能变强大, 复杂度和知识要求也不断会增加,
作为一个函数式编程社区的人, 我当然是走后面一条路多一点. 前端毕竟都是这样.
这大概是我纠结的地方, 一直研究小众技术, 好处很难发挥出来, 坏处妥妥地撞上.

最近心态还是挺纠结的, 前端圈熟人也许知道我纠结的那些事情, 但总之就是纠结的吧,
我不知道有没有人是想到办法度过这个难关的, 从 React 到 Vue 怎么快速适应过来,
当然我觉得我是永远不会适应了, 只是希望别变成那种极端的人,
可以不喜欢, 但是因为不喜欢就不会写甚至喷对方, 这肯定是不对的…
类似的站在 ClojureScript 面对 Redux 也有类似的感慨吧… 心累
如果实在做不到同时会多种东西就不得不承认自己的失败了, 感觉真要哭笑不得.

5 Likes
#5

angular react vue 思路几乎是一摸一样的 没有太大的差别 我这三个都开发过多个应用 思路都是相通的 vue更像是 angular和react的合体 vue也有相应的简便之处 会angular和react vue也就最多一两个小时看下文档 就上手了

#6

:joy: 不太习惯,第一次看到vuex的demo的感觉是‘ 天呐,怎么可以直接改变state ’

#7

react 和mvvm的思想不一样的,就像我用习惯了angular,vue 突然用react也很不习惯

#8

个人见解,Vue 和 React 大同小异,区别主要在如下几个方面:

  • Vue 更偏向于传统的模板写法,门槛更低些,多数情况写起来更方便;React 使用 jsx,表现力更强(Vue 也可以使用 jsx)
  • 组件代码复用上 Vue 更偏向使用 Mixin,React 更偏向 High Order Component,个人更倾向于 React 的方案
  • 各自的全家桶里面 Vuex 是直接对 state 的字段进行赋值;Redux 是用 reducer,更函数式一些。
  • 组件事件处理上 Vue 是子组件向父组件 emit 一个事件; React 是父组件传一个回调到子组件里,个人更倾向 Vue 的方案

另外说一下,Vue 1.x 很像一个精简版的 Angular,但是 Vue 2.x 引进了 virtual-dom 和单向数据流之后更像 React 了,v-model 看起来是双向绑定,实则是个语法糖而已。在我看来 Vue 和 React 现在只是代码口味上有些差异,本质思想上并没有实质区别。

1 Like
#9

深深赞同,vue的抽象能力,不如react。

#10

我正在学习vue,打算用vue2做酷狗的移动端页面,可以关注我在segmentfault上的博客,会实时分享学习进度。

目前已经更新了2篇

vue2-webpack2框架搭建:https://segmentfault.com/a/1190000009127162

vue2-swiper轮播组件:https://segmentfault.com/a/1190000009143923

2 Likes
#11

说明你老了。

#12

新人赶紧上来顶着… 文章什么的我是写不动了, 我只能写写微博刷刷秒拍…

#13

可以 紧跟步伐 目前也在学 文档还没有看完

#14

大神考虑的东西果然跟我们不一样:smiley:

#15

一开始用react做项目的时候,如果没有加入redux感觉还是蛮轻松的,但是加入redux以后费了一些时间去理解。
后来发现网上都说vue比react的性能要好,所以就去看了vue的文档,说实在的vue的文档确实比react的写的好多了 哈哈。
言归正传,在写了一个demo以后返现返现vue中对于某一个问题的解决方案要不react多一些,再加上vuex后就更明显了。vuex虽然也是状态管理器,但是感觉没有redux的流程好,直接修改state感觉上有点不安全。
总体来讲vue学起来应该要比react简单一点,上手能更快一些。个人感觉如果是小型的项目用vue可以快速开发出成品,如果是大型的项目感觉还是用react比较好。

#16

熟悉vue全家桶的情况下转到react全家桶基本一个星期内可以上手,还是只是下班时间的那种,我就是这样,反过来我觉得也差不多。

#17

vuex是可以this.$store.state.xx = yy这种写法,但是官方推荐写法还是通过action、mutation再去修改state,个人感觉跟redux的action、reducer基本类似。

#18

用过vue,现在也会点react,以一个js老经验的人来说,vue的代码确实不如react,可能是一个是个人的,一个是团队开发的。(实话实说而已,没别的意思)

#19

初始化的时候可以配上strict:true,开启严格模式,就不能直接修改啦。

#20

https://github.com/aiyuekuang/vue_home.git这个就够了