目前vue,angular,react这三个前端框架非常流行,但是在很多场景下,我们在选择技术路线的时候总是很纠结,不知道该选择哪一种,这个问题的是本质是对框架的优劣认识不清晰。在这里不详细对比技术细节,因为技术细节差异不是我们选择框架的首要因素。我们该怎样选择一个框架,我觉得应该从以下几个角度:
1.这个框架的使用场景。比如是否同时适用于Web端和原生App或者快速搭建一个小型项目等等。
2.团队当下的技术能力。学习新框架的时间成本,后期团队维护的成本。
3.框架能解决哪些问题。优劣势是什么。
4.框架的生态系统。是否有繁荣的生态系统供我们学习使用。
5.跨平台性。是否需要同时支持移动端和pc端
我们从这几个角度去分析一下几个框架的优劣
先说一下这三个框架的共同之处,首先这三个框架都有很好的性能(这里的angular指的是2.0+),都支持数据绑定,组件等基本功能。
Angular
这是一个给开发者一整套解决方案的框架,相对于vue和react,angular不需要搭配其他库,就可以构建出一个大型项目,但它并不太适合开发小型应用。下面是angular的一些特点~
1.这是一个完整的框架拥有良好的项目结构,通常情况下,我们编写的js代码是没有正规的项目结构的,是因为在小型项目中对结构的要求很低,但是在大型项目中则完全不同,比,如webapp中ionic框架就是用的Angular作为内核个人觉得也是看中了angular的这个特点。但是会丢失一些灵活性。
2.拥有自己的构建工具,在Angular-CLI 使用打包编译,生成组件等都有相应的命令行,非常方便快捷,虽然vue和React也有构建工具,但是局限性很大,需要配合其他构建工具,个人觉得Angular-CLI足够强大,这也是一套完整的框架的带来的红利,不必在选择库上浪费时间。
3.体积较大。虽然在angular2+之后 使用了AOT和 tree-shaking,但是相对于其他轻量级框架来说还是略显臃肿。加载较慢
4.学习成本较高。需要很多基础概念和使用较复杂的api接口,入门相对困难。而且angular2.0+用的是ts语言,需要对ts语言有一定程度的了解。而且从angular1.x升级到2.x的时候框架几乎是重写了一遍,导致之前用angular1写的程序维护起来比较困难。如果是新入门学习angular,推荐从2开始学起。
5.跨平台优势。有ionic等使用angular作为内核的框架,如果是用angular开发pc端+移动端的跨平台开发,组件服务指令都可以复用,这对开发这来说是非常不错的,react有React Native同样也是跨平台非常不错。vue有与阿里合作Weex,但是目前来说跟前两个还有很大差距。
6.生态系统庞大。angular和react都有庞大的生态系统,vue相对较差
总结:它是一个成熟完善的框架,而React和Vue只是一个UI组件库。angular适用于大型项目,所以会有一些代价,比如学习成本高,如果你只是想用到组件,数据绑定等基础功能去开发一个小型应用,那么最好不要选择angular~
Vue
一句话说明Vue的特点,个人总结:灵活,构建项目可大可小,学习成本低,性能好,适合开发小型应用。这里不是说它不能构建大型应用,只不过个人觉得你如果想开发一个尽可能的小和快的应用,我建议你使用vue~
1.灵活性。它从不限制你用什么样的代码组织结构,更加随意。
2.实用性。它虽然很轻量,但是却拥有很强大的实用性,数据绑定,计算属性侦听器,组件等常用功能不次于angular。在很多方面比angular容易上手更
3.体积小。vue相对于angular体积小了很多。
4.学习成本较低。你只需要有良好的 HTML 和 JavaScript 基础就可以通过官网上的阅读指南快速投入开发,相比于react和angular都有很大的优势,angular需要学习各种各样的api,理解各种基础概念,还有学习ts语言才能进行开发;react需要知道 JSX 和 ES2015还需要学习构建系统等
5.跨平台优势较差。与其他两个框架相比,跨平台优势较差,虽然与阿里合作weex但是差距还很大。
总结:轻量,学习成本低等等,优点很多。缺点就是他的生态社区跟angular和react目前还差很远~
React
个人觉得React和Vue有很多相似之处,1.两个框架都专注于视图层,其他功能如路由和全局状态管理交给相关的库,这跟angular有很大不同 2. 都使用 "Virtual DOM" 3.提供了响应式和组件化的视图组件,React 的优势在于生态系统比较繁荣
1.灵活性。这点跟vue很像,React可以与已知的库或框架很好地配合。
2.生态圈强大。因为react把路由库和状态管理库交给社区维护,虽然相对来说这些方面不如vue和angular的官方发布稳定,但是造就了生态圈的繁荣。
3.跨平台优势,React Native 能使你用相同的组件模型编写有本地渲染能力的 APP (iOS 和 Android)。能同时跨多平台开发,类似于ionic。
4.学习成本一般,,在你开始学 React 前,你需要知道 JSX 和 ES2015,相对于vue是学习难度高,相对于angular来说比较好学,如果要构架大型应用,它的生态是相对复杂,个人觉得没有angular官方发布的文档清晰。
总结:react和vue一样只关注视图层,只是一个UI组件库,这跟angular有本质的区别,如果react想开发大型应用需要配合第三方库,他的跨平台优势和生态优势大于vue。
假如你想快速开发一个简单学习成本低的小应用,可以考虑Vue~
假如你想开发一个大型应用,可以考虑angular~
假如你想开发一个跨平台应用,可以考虑react~
以上只是建议,在具体选择哪个框架上,本文不能给出明确的答案,因为不同框架的在不同复杂的应用场景下优势是不同的,但是我会给你精选出一些有价值的东西供你参考。