angular 和 vue 的区别是什么? 下面本篇文章就来对比一下 angular 和 vue. 有一定的参考价值, 有需要的朋友可以参考一下, 希望对大家有所帮助.
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 个月似乎情况有所变化:
截止到 5 月 12 号的 NPM 下载数量. PNG
总结
相较于 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" , 也从侧面暗示了其实三大框架只要学会一个, 短时间内掌握上手其他两个都不是较大的困难.
更多前端开发 https://www.html.cn/ 知识, 请查阅 HTML 中文网 !!
来源: http://www.css88.com/qa/angular-js/14259.html