angular
angular一般指 angular2 及以上版本。2010年9月,Google 发布首次angular,即angular1版本。2016年10月 Google 又发布了angular2版本,但是2版本与1版本有非常大的区别,几乎是全部重写,且不向前兼容,更像是一个全新的框架。遂将angular1改名叫angularJs,现angular特指angular2+。
vue
于 2014 年 2 月首次由 Google 前员工尤雨溪发布。凭借较低的上手难度、良好的性能,成为2016 年发展最为迅速的 JS 框架之一,特别是国内的增长及其迅速。
框架对比
1.体积和性能
相较于vue,angular显得比较臃肿,比如一个包含了 Vuex + Vue Router 的 Vue 项目 (gzip 之后 30kB) ,比angular-cli 生成的默认项目尺寸 (~65KB) 还是要小得多。
在渲染性能上,这两个框架都很快,性能上几乎没有差别。
2.开发效率
都提供了各自的脚手架工具,帮助提高从开发到构建打包的整套过程,另外均可以基于组件化开发,编写可复用的组件,大大较少重复性的工作。但angular凭借 Typescript 本身比 JavaScript 更加工程化的优势,在都是团队开发的情况下,angular会更具优势。
3.灵活性
Vue 相比于 Angular 更加灵活,可以按照不同的需要去组织项目的应用代码。比如,甚至可以直接像引用jquery那样在HTML中引用vue,然后仅仅当成一个前端的模板引擎来用。
4.可维护性
我理解的可维护性包括两个层次,一是代码的可读性,二是可重构性。同样是因为对TS(能提供静态类型检查)的支持不够全面,使得vue在这两个层次都有些不足。vue作者本人也承认vue在TS 的支持上还有所不足,在3.0版本中将会有所改进。
5.es6支持
es6是新一代的javascript标准,对JavaScript进行了大量的改进,使用es6开发已是基本需求。虽然有部分十分老旧的浏览器不支持es6,但是可以利用现代开发工具将es6编译成es5。在对es6的支持上两者都做得很好,(TS本身就是es6的超集)
6.学习曲线
针对前端而言,angular的学习曲线相对较大,vue学习起来更容易一些。不过对java和c的使用者而言,angular的静态检查、依赖注入的特性,以及面向对象的编程风格,使得angular都要更亲切一些。
7.使用热度
在使用热度上,vue具有更大优势,主要原因是更受数量庞大的中国开发者欢迎。较低的上手难度,易懂的开发文档,以及国人主导开发的光环,都使得vue在国内更为流行。但最近6个月似乎情况有所变化:
总结
相较于vue,angular的优点:
1.开发效率更高
2.可维护性可强
3.对java和c使用者更友好
缺点:
1.体积大
2.灵活性差,不能随心所欲的选择使用方式
3.学习曲线陡峭
4.国内使用热度不及vue
框架选择
最终选择 angular 最为开发框架,除了angular本身的优点以外,其余理由如下:
1.虽然其体积相对较大,但并没有大得非常过分。此外在开发和构建工程中,可以使用惰性模块加载和摇树优化,可以使首页加载的资源较少,以及在AOT编译模式下,网络方面的损耗时间可以在渲染阶段进行一定弥补。最后本项目主要在内网使用的情况下,带来的网络延迟并不明显。
2.angular使用方式不如vue灵活,但是在本项目中并不需要很刁钻的使用方式。
3.虽然本身上手难度更大,但我有过angular独立且完整的开发经验,对vue反而更陌生一些。
4.使用热度对项目本身的影响可能有两个,一是框架bug的解决情况,二是开发人员的招聘会相对困难一些。针对第一点,热度低只是相对的,在全球如此大的开发人群基数下,框架早已趋于稳定,且有专门的团队在维护。针对第二点,大多数的前端招聘上都有一句话 “掌握react \ angular \ vue” ,也从侧面暗示了其实三大框架只要学会一个,短时间内掌握上手其他两个都不是太大的问题。