现在我们来比较一下vuejs和react,angular,ember,knockout和polymer等其他框架的比较。
虚拟dom
虚拟dom是dom树的虚拟表示。 使用虚拟dom,创建一个与真实dom相同的javascript对象。 每当需要对dom进行更改时,都会创建一个新的javascript对象并进行更改。 之后,两个javascript对象进行比较,最后的更改在真实的dom中更新。
vuejs和react都使用虚拟dom,这使得它更快。
模板与jsx
vuejs分别使用html
,js
和css
。 初学者很容易理解和采用vuejs风格。基于模板的vuejs方法非常简单。
react使用jsx
方法。reactjs的一切都是javascript。html和css都是javascript的一部分。
安装工具
react使用create react app
,vuejs使用vue-cli /cdn/npm
。 两者都非常容易使用,并且项目建立了所有的基本要求。 react需要构建webpack,而vuejs则不需要。 我们可以从使用cdn库的jsfiddle
或codepen
中的任何地方开始编码vuejs。
受欢迎程度
react比vuejs更受欢迎。 react的工作机会不仅仅是vuejs。 react背后有一个很大的名字,也就是facebook,使它更受欢迎。 因为react使用javascript的核心概念,所以它使用javascript的最佳实践。一个和react一起工作的人对于所有的javascript概念都是非常好的。
vuejs是一个发展中的框架。 目前,与react相比,vuejs的就业机会较少。 据调查,许多人正在适应vuejs,这可以使其比react和angular更受欢迎。 有一个很好的社区正在研究vuejs的不同功能。vue路由器由这个社区维护定期更新。
vuejs采用了angular和react的优秀部分,并建立了强大的库。 vuejs比react/angular快得多,因为它的轻量级库。
相似之处
vuejs与angular有很多相似之处。 v-if
,v-for
等指令与ngif
,ngfor
的angular几乎相似。它们都有一个用于项目安装的命令行接口用来构建它。 vuejs使用vue-cli
和angular使用angular-cli
。 两者都提供双向数据绑定,服务器端渲染等。
复杂程度
vuejs很容易学习。 如前所述,初学者可以使用vuejs的cdn库,并开始使用codepen
和jsfiddle
。
对于angular来说,需要经过一系列的安装步骤,而初学者也很难开始使用angular。 它使用typescript进行编码,这对于来自javascript核心背景的人来说很困难。 但是,对于有java和c#背景的用户来说更容易学习。
性能
决定性能的取决于用户。 vuejs文件的大小比angular轻得多。 以下链接提供了框架性能的比较:http://stefankrause.net/js-frameworks-benchmark4/webdriver-ts/table.html
受欢迎程度
目前,angular比vuejs更受欢迎。 很多组织都使用angular,因此非常受欢迎。 在angular中经验丰富的求职者也更多地获得工作机会。 但是,vuejs正在占据市场的位置,可以被认为是angular和react的一个很好的竞争对手。
依赖
angular提供了很多内置功能。 我们必须导入所需的模块并开始使用它,例如@angular/animations
,@angular/form
。
vuejs没有angular的所有内置功能,需要依靠第三方库来处理。
灵活性
vuejs可以很容易地与任何其他大项目合并,没有任何问题。 angular不会那么容易与任何其他现有项目合作。
向后兼容性
我们都知道有angularjs
,angular2
和angular4
。 angularjs
和angular2
有很大的不同。 在angularjs
中开发的项目应用程序由于核心的不同而不能转换为angular2
。
vuejs的最新版本是2.0,并具有向后兼容性。 它提供了很好的文档,这很容易理解。
typescript
angular使用typescript进行编码。 用户需要掌握typescript
的知识才能开始使用angular。 但是,可以从jsfiddle
或codepen
中的任何位置开始使用vuejs编码使用cdn库。 我们可以使用标准的javascript,这很容易开始使用。
相似之处
ember提供了ember命令行工具,即用于ember项目的易于安装和编译的ember-cli
。vuejs还有一个命令行工具vue-cli
来启动和构建项目。
它们都具有诸如路由器,模板和组件等特性,使得它们在ui框架中非常丰富。
性能
与ember相比,vuejs有更好的表现。 ember增加了一个微光渲染引擎,目的是提高重渲染性能,这与vuejs和react使用虚拟dom类似。 但是,与ember相比,vuejs有更好的表现。
knockout提供了很好的浏览器支持。它支持ie的较低版本,而ie8及以下版本不支持vuejs。 knockout的发展速度已经放缓。近来也没有太多的人气。
另一方面,vuejs开始越来越受欢迎,vue团队定期更新。
polymer库是由google开发的。 它用于许多google项目,例如google i/o,google earth,google play music等。它提供了与vuejs类似的数据绑定和计算属性。
polymer自定义元素定义包括普通的javascript/css,元素属性,生命周期回调和javascript方法。 相比之下,vuejs允许轻松使用javascript/html和css。
polymer使用web组件功能,并且需要浏览器的polyfills
,否则不支持这些功能。 vuejs没有这样的依赖关系,并且在ie9+的所有浏览器中工作正常。