AngularJS的优缺点总结

AngularJS的优点

1.双向数据绑定

AngularJS 提供了强大的数据双向绑定功能,再也不需要使用 JS 或者 jQuery 来操作 DOM 元素,大大减少了前端的代码量。

2.完善的体系,提供一整套 WEB 开发的解决方案包括模板

	数据双向绑定、路由、指令、过滤器、模块化、服务(可复用)等特性,
	基本上前端需要用的东西都可以从这个框架里面找到,减少选择性疲劳。

3.引入后端语言的一些概念单元测试、依赖注入等等

	能够很容易的写出可复用的代码,对于敏捷开发的团队来说非常有帮助

AngularJS的缺点及Angular的改进

1.性能

	导致这个问题的主要原因是 AngularJS 的“双向数据绑定”,也是很多人吐槽的一个点,
	“双向数据绑定”是一把”双刃剑“,在 AngularJS 作用域里面的任何修改都会触发“脏值检测”,
	比如$scope.name = 'AngularJS'这段代码会触发“脏值检测”,AngularJS 会遍历作用域里
	面的所有变量,每一个变量都会被检测是否发生改变,有变化就会把值从视图同步到模型,
	或者模型到视图的同步,如果页面使用大量的双向数据绑定,页面就会可能出现卡顿现象,
	这个是历史遗留的原因,这样的做法的好处是可以兼容低版本浏览器,比如 IE8,不过 AngularJS 1.3 
	开始就不再支持 IE8;双向数据还会导致另一个问题,就是数据的流向很模糊,
	比如你就想把数据单向的从view同步到model,除非自己加注释明确说明,不然关从代码层面是看不出,
	这使得代码的后期维护成本非常高。

2. 作用域

	什么是作用域?如果我把它说成是“上下文”不知道会不会好理解一点,用过 AngularJS 的人就会
	发现,AngularJS 几乎封装了所有原生的 JS API,使用它封装后的 API 才会触发“脏值检测”,比如
	使用原生setInterval(callback, time)定时器,不会触发“脏值检测”,导致开发者需要手动调用 AngularJS
	 底层的接口触发“脏值检测”,比如$scope.$apply()或者 $scope.digest(),这两个都是一样的,
	 $scope.$apply()会调用 $scope.$digest(),因此 AngularJS 封装了$interval服务来解决这个问题,
	 使用原生 JS 事件,都需要这么做。鉴于作用域的各种问题,在新版的 Angular 中,作用域($scope)
	 这个东西已经不复存在。

3.低配版路由

	页面只能配置一个 ng-view,这让 AngularJS  路由使用起来非常局限,导致很多人都使用
	第三方路由组件 ui-route 来替代官方的 ng-route,ui-route 通过嵌套视图来复用一些通用的部件,
	而第三方的 ui-route 个人觉得也不是很好用,别人的东西用起来就是不爽。新版 Angular 的路由
	已经解决了这个问题。

4.JS 语言本身

	灵活又有很多坑的语言,又爱又恨难舍难分,网上有很多人讨论过 JavaScript,口水战也不少;
	Angular 选择使用微软的 TypeScript,TypeScript 是 JavaScript 的超集,是 JavaScript 的强类型版本,
	可以编译成 JavaScript,编译器将会去掉 JavaScript 本身没有的东西,所以 TypeScript 
	并不依赖于浏览器的支持,也并不会带来兼容性问题。与 TypeScript 结合之后,使 Angular 
	更加适合开发大型项目。

5.表单AngularJS

	 对于表单的校验和错误消息提示能力非常薄弱,Angular 提供了非常完善的表单校验和消息
	 提示功能,比如 Angular 提供了响应式表单。

6. 学习成本

	AngularJS 存在非常多的概念,模块、控制器、模板、过滤器、服务、组件、指令、双向数据绑定、
	作用域、依赖注入等,这些对于初学者很不友好,而且你还很难准确指出 AngularJS 的核心是什么,
	如果谈到 React 的核心是什么,很多人很容易就会想到“虚拟 DOM”、“组件”。新版的 Angular 的
	核心就是组件,语法上使用一种更加优雅的装饰器注解来整合代码。用Angular,它包含很多复杂的
	概念,也许不懂它为什么要加这么多乱七八糟的东西,但是慢慢地你就会了解一切都是有它存在的
	原因的。有一句话不知道听过没有,大概是这样的:一个程序员不学数据结构与算法,那么他编程
	一辈子的经验就可以写成一本“数据结构与算法”。Angular的情况也大概一样,它是一群人很多年蛋疼
	的经验所总结出来的东西,去学习它我们能少走很多弯路。

作者:大大头大
链接:https://www.jianshu.com/p/59402ddd0831
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

发布了137 篇原创文章 · 获赞 123 · 访问量 25万+

猜你喜欢

转载自blog.csdn.net/lz20120808/article/details/100082219