Vue.js 2.0 和 React、Augular等其他前端框架大比拼

2020-06-16 06:34:42易采站长站整理

Vue 在普通 JavaScript 对象上建立响应,提供自动化的计算属性。在 Ember 中需要将所有东西放在 Ember 对象内,并且手工为计算属性声明依赖。

Vue 的模板语法可以用全功能的 JavaScript 表达式,而 Handlebars 的语法和帮助函数语法相比之下非常受限。

在性能上,Vue 甩开 Ember 几条街,即使是 Ember2.0 的最新Glimmer引擎。Vue自动批量更新,Ember 当性能关键处需要手动管理。

Knockout

Knockout 是MVVM领域内的先驱,并且追踪依赖。它的响应系统和Vue相似。它对浏览器支持以及所有的表现也是让人印象深刻的。它能最低支持到IE6,而Vue最低只能支持到IE9。

随着时间的推移,Knockout的发展已有所放缓,并且略显有点老旧了。比如,它的组件系统缺少完备的生命周期事件方法,尽管这些在现在是非常常见。以及相比Vue调用子组件的接口显得有点笨重。

如果你有兴趣研究,会发现它们在接口设计的构思理念上是不同的。这些通过各自创建的  simple Todo List 可以体现出来。或许有点主观,但是很多人认为Vue的API接口更简单结构更优雅。

Polymer

Polymer 是另一个由谷歌赞助的项目,事实上也是Vue的一个灵感来源。Vue的组件可以粗略的类比于Polymer的自定义元素,并且两者具有相似的开发风格。最大的不同之处在于,Polymer是构建于最新版的Web Components标准之上的,并且需要非凡的polyfills来工作(性能下降),浏览器本身不支持这些功能。相比而言,Vue不需要依赖polyfills来工作,最低到IE9。

在 Polymer 1.0版本中,为了弥补性能,团队非常有限的使用数据绑定系统。例如,在Ploymer中支持的唯一表达式只有布尔值否定和单一的方法的调用,它的computed方法的实现也不是很灵活。

Polymer 自定义的元素是用HTML文件来创建的,这回限制你的普通的JavaScript/CSS(和被现代浏览器普遍支持的语言特性)。相比之下,Vue的单文件允许你非常容易的使用ES2015和你想用的Css的预编译处理器。

当部署到生产环境的时候,Polymer建议使用HTML Imports加载所有资源。而这要求服务器和客户端都支持Http 2.0协议,且浏览器实现了标准。这是否可行就取决于你的目标用户和部署环境了。如果状况不佳,你必须用Vulcanizer工具来来打包Polymer元素。在这方面,Vue 可以结合异步组件的特性和Webpack的代码分割特性来实现懒加载(lazy-loaded)。这同时确保了对旧浏览器的兼容且又能更快加载。

对Vue和Web Component标准之间进行深层次的整合,也是完全可行的,比如Custom Elements、Shadow DOM的样式封装。然而现在在我们做出严肃的承诺之前,我们仍在等待标准成熟,进而广泛应用于主流的浏览器中。