React
为什么 React 体积那么大
React 文件体积为何如此庞大?首先,为什么会得出 React 大的结论,对比几个前端框架的 min 文件:
- Mithril 0.2.3 19K (8K gzipped)
- Angular 1.2.16 102K (38K gzipped)
- Vue 1.0.8 73K (24K gzipped)
- React 0.14.7 133K (38K gzipped)
React 作为一个 View-ViewModel 库,相比于 Mithril,Vue 这些目的大致相同的库,文件显得尤为庞大,甚至比 Angular 这种全能 MVVM 框架还大。但是这就能说 React 大吗,我认为是的,Mithril 与 React 都是基于 Virtual DOM 的实现,我觉得这很有可比性。虽然 Mithril 的真实性能大致为 React 的一半,但是代码量却是 React 的不到 1/10(实际上 Mithril 只有大概 2000 行代码),Mithril 在使用了一些小技巧之后甚至性能飙升至 React 的数十倍。对 Mithril 感兴趣可以看下 我对 Mithril 渲染性能的分析。
ARV 渲染实现番外篇之 Mithril
这个系列本来没有打算去研究 Angular,React,Vue 之外的框架,但是 上次的性能测试 让 Mithril 这个框架格外引人注目,毕竟他的成绩超过了其他所有框架。因为我没有在项目中用过 Mithril,所以只能从其文档及代码中寻找他惊人能力背后的实现。因为这个是番外篇了,所以可能不会太严谨,科普性质吧。
Mithril
Mithril 翻译过来就是秘银的意思,这是魔幻小说或游戏里面才有的虚构金属物质,基本上是最好的金属,可以打造出最上等的武器装备。可能作者希望这个库就是那么厉害的东西,而且用 Mithril 做出来的产品也是上等的吧。他的第一个版本于 2014 年 3 月发布,相比 React (2013 年 5 月),Vue (2013 年 12 月),都要晚一点,而现在也只发布到 0.2.3 版本。
ARV 渲染实现比较总结
ARV 渲染实现比较之 Vue
今天来分析 Vue。
Vue
Vue 是一个新兴的前端视图框架,他做的事情跟 React 很类似,实现了前端组件化以及 View-ViewModel 绑定,但是同时又支持跟 Angular 很类似的模版语法,以及比 Angular 更方便的 filter 和 directive 定义方法,大大提高了开发效率。React 和 Angular 都熟悉的开发者转到 Vue 使用起来十分方便得心应手。
如果只是 React 跟 Angular 两者优点的结合,那 Vue 也没那么出彩,然而他的渲染效率甚至是 React 的 10 倍之多,这也是很多开发者转向 Vue 的理由。
ARV 渲染实现比较之 React
ARV 渲染实现比较之 Angular
重新开始写博客的第一篇,还是来点干货,在闭关一年多之间,我在项目中使用过 Angular, React, 和 Vue,今天我想说一下他们在渲染方面的一些实现的异同。
首先,要澄清一件事情,这几个东西虽然都可以用来渲染,但是却是不同级别的东西。Angular是一个功能十分强大的 MVVM(Model-View-ViewModel)框架,拥有包括模块化、服务在内的大而全的解决方案;而 React 只是一个组件化虚拟 DOM 库,也就是 View-ViewModel 部分;Vue 也是一个组件化的 View-ViewModel 库,但是他使用了类似 Angular 的模版语法。
Angular 虽然功能很全,但是这就意味着灵活性的降低。包括他自己定义的一套 html 扩展语法到js代码的映射关系,定义服务和过滤器的复杂写法,想用一个非 Angular 系的插件都要回想一下如何遵守他的规定来写扩展,大大降低了我们写代码的积极性。虽然 Angular2 号称解决了很多 Angular1 版本的缺点,但是既然他还在Beta阶段,我也不好去做什么评价。至少现在还没有多少人会去真正的使用它,所以今天这里的 Angular 仅代表他的第一代的产品。