lihongxun945/myblog

vue3.0开发路线公布

lihongxun945 opened this issue · 2 comments

过了一个国庆回来就发现vue又有新闻了,作者尤雨溪发布了3.0版本的开发路线。看了一下,相当多的点正是我在用的时候,或者是在读源码的时候觉得不太好的地方。这里我挑几个重点的说一下:

放弃flow而直接改用TS来写源码
算是对TS党的一个福音,这样会导致vue在使用TS的时候应该更少会出现类型推断不准确等的兼容性问题。

把源码拆分成不同的独立模块
这一点非常棒,比如会把 Observer 模块独立成一个单独的包维护,这样大家看代码的时候会更加清晰。并且,由于把一些功能独立出来,以后就可以通过不同的包来配置出不同的版本。比如可以有一个 defineProperty 版本的Observer兼容性好,而另一个用 proxy 实现的则能完美解决类似添加属性的问题。
另外,Observer 独立之后,就可以单独调用他来监听数据变动,而不是需要通过 new Vue() 的方式。相信 vuex 里面的这种实现会马上进行一次升级。

用Proxy实现Observer
这一点其实早就被提出了,因为 defineProperty 的局限性,无法做到检测到对属性的添加操作、无法检测通过数组下标进行修改等。用proxy 可以完美解决这些问题。不过 proxy 本身的兼容性没有 defineProperty 好,可以参见这里 https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Proxy

原生支持class组件
其实我们现在的组件要么是一个render方法,要么是一个配置对象,而不像React那样是一个原生的类。在Vue中,我们使用的组件其实并不是我们声明的那个,我们只声明了一个组件的配置对象,Vue会通过调用 Vue.extend 帮我们创建一个类。这次改动之后,应该会变得和React一样。我们使用的组件就是我们声明的类,而不是被Vue隐式的创建了一个。

另外还有一些性能上的提升。

简单的记录下,暂时觉得比较关注的就是上面的几个改动,期待版本发布。

今天,我只是一个实习僧

然而现在都还没有正式发布3.0