Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

vue3.0开发路线公布 #36

Open
lihongxun945 opened this issue Oct 8, 2018 · 2 comments
Open

vue3.0开发路线公布 #36

lihongxun945 opened this issue Oct 8, 2018 · 2 comments

Comments

@lihongxun945
Copy link
Owner

过了一个国庆回来就发现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隐式的创建了一个。

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

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

@eeeecw
Copy link

eeeecw commented Nov 15, 2018

今天,我只是一个实习僧

@arvinzty
Copy link

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

3 participants