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
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

AngularJS的优缺点总结相关推荐

  1. SegmentFault 技术周刊 Vol.17 - 听说你还没用上 AngularJS

    如何在网页上构建动态应用,通常的解决方案是使用类库和框架,来弥补原生 JS 和 HTML 的不足,实现具体的应用逻辑,如典型的 jQuery.knockout.js 等.而 Google 则直接尝试从 ...

  2. JavaScript框架比较:AngularJS vs ReactJS vs EmberJS

    Javascript场景的易变性 Web开发的变化发生的很快.几乎每个月都会引入一个新的JavaScript框架,并且现有的框架经常被更新.由于这些框架是开放源代码的,因此世界各地的大型社区也都可以不 ...

  3. AngularJS优缺点、使用场景

    AngularJS 优缺点 优点: AngularJS模板功能强大丰富,自带了极其丰富的angular指令. AngularJS是完全可扩展的,与其他库的兼容效果很好,每一个功能可以修改或更换,以满足 ...

  4. 基于angularJS和requireJS的前端架构

    1.概要描述 1.1.angularJS描述:angularJS是可以用来构建WEB应用的,WEB应用中的一种端对端的完整解决方案.通过开发者呈现一个更高层次的抽象来简化应用的开发.最适合的就是用它来 ...

  5. 客户端渲染换为服务器端渲染_服务器与客户端渲染(AngularJS与服务器端MVC)

    客户端渲染换为服务器端渲染 关于服务器与客户端应用程序渲染的讨论很多. 虽然没有"一刀切"的解决方案,但我将尝试从不同的角度主张客户端(特别是AngularJS). 首先是建筑. ...

  6. 服务器与客户端渲染(AngularJS与服务器端MVC)

    关于服务器与客户端应用程序渲染的讨论很多. 虽然没有"一刀切"的解决方案,但我将尝试从不同的角度主张客户端(特别是AngularJS). 首先是建筑. 建筑 做得好的架构已经明确定 ...

  7. rf框架的缺点_2017热门开源自动化测试框架优缺点对比

    原标题:2017热门开源自动化测试框架优缺点对比 时间一晃已来到 2017 年的最后一个季度,TestProject 对比了在今年比较热门的 7 款开源 自动化测试框架的优缺点,以帮助你选择适合自己的 ...

  8. python web框架哪个好_盘点:9款流行Web框架及其优缺点

    对于Web开发人员来说,找到一些合适的工具,能让工作轻松许多.这其中,Web框架更是提升工作效率的"利器".但因为可选的Web框架非常多,如何选择也是一件令人头疼的事情. 本文列出 ...

  9. 老树发新芽—使用 mobx 加速你的 AngularJS 应用

    1月底的时候,Angular 官方博客发布了一则消息: AngularJS is planning one more significant release, version 1.7, and on ...

最新文章

  1. 程序员吐槽_男子吐槽:35岁被裁都是低端程序员,有能力只会是一个新台阶
  2. 文曲星猜数游戏的非TDD实现
  3. php实现凯撒密码加密算法,Python实现的凯撒密码算法示例
  4. symantec病毒服务器的部署及配置
  5. 阿里P7程序员、资深架构师,竟不知jvm、红黑树!这都能进大厂?
  6. 塔防游戏策划方案unity
  7. Java字符串排序后输出
  8. ERP系统之结存功能
  9. 01-Springboot优点缺点
  10. windows10系统,如何进行文件内容多关键字搜索
  11. php搭建aria2,CentOS vps安装aria2 + ariaNg + h5ai搭建下载服务器
  12. 苹果公司欲使用3D打印技术进行新产品的测试
  13. python生成热度图_Python - 场景热力图绘制[转]
  14. 艾宾浩斯遗忘曲线复习计划表
  15. 直流电机的快衰减和慢衰减模式分析
  16. 土拍熔断意味着什么_315土拍将解地市之渴?“熔断”来了,别高兴太早
  17. 电信管理局:2011推进三网融合走向深入
  18. C/C++中野指针的问题
  19. 你真的知道什么是平面是设计吗?
  20. 在网页中加入Flash的代码

热门文章

  1. 路由追踪traceroute分析
  2. Asp.Net Web Api 部署------在云服务器IIS上部署Web Api程序
  3. 网大网剧备案要避免的几大错误,内附最新备案流程!
  4. 服务器如何隐藏真实IP地址?服务器隐藏真实IP的方法
  5. 怎么判断时double和floatc++_痛心!血肌酐正常却已经肾衰?如何判断肾功能,这些指标更准确...
  6. 腾讯逆地址解析php,腾讯地图逆地址解析,通过经纬度获取详细的信息数据
  7. 一文了解SAP Ariba是什么?
  8. android的ui模板,11免费好看的手机APP UI模板
  9. 使用python turtle库13行代码实现奥运五环
  10. 便利店的选址有什么诀窍吗?需要掌握哪些选址技巧?