魔扣论坛

魔扣源码论坛业务
查看: 1160|回复: 7

AngularJS开发工作当中必须避免的十种常见错误

[复制链接]

该用户从未签到

27

主题

0

回帖

2

积分

魔扣新手

Rank: 1

魔扣币
2
贡献
2
威望
0
发表于 2018-8-12 22:45:33 | 显示全部楼层 |阅读模式
魔扣币兑换比例:【 50以下 : ¥1 = 10 魔扣币 】丨【 50 - 100 :¥1 = 20 魔扣币】丨【 100以上:¥1 = 30 魔扣币 】

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
AngularJS是很多Web开发人员在打造单页面应用程序时的首选创建方案。必须承认,无论开发哪一种应用程序类型,团体以及个人开发人员都将不可避免地面临一系列挑战,不过使用AngularJS将大大降低整个流程的实现难度。在AngularJS的帮助下,大家将能够充分享受单页面应用程序开发与测试的过程,因为其提供的框架囊括了客户端模型-视图-控制器以及开发端模型-视图-视图模式。另外,它还提供大量其它功能组件,足以帮助用户创建出富互联网应用程序。

然而尽管开发人员对于AngularJS已经相当熟悉,但仍有很多潜在错误在不知不觉中给应用构建工作带来负面影响。不过只须遵循几项预防措施,我们就完全能够对其加以规避。下面来看最为常见的几种AngularJS错误:
1.在AngularJS当中不顾实际情况,一味利用匿名函数进行声明
请始终将自己的对象及函数分配给特定变量。通过这种方式,大家会发现控制与变更工作会变得更加轻松,代码本身也会更加整洁且易于查阅。另外,大家能够在不同文件当中对代码进行轻松拆分,而这一点对于应用程序的后续维护而言非常重要。
与此同时,这种作法对于保障可测试性也有着重要意义;当声明关系较为明确性,代码的测试工作将变得非常简单。作为开发人员,大家应当让自己的代码更加直观且易于理解,而这一切都将在长久的工作周期中带来回报。总而言之,遵循这一原则将帮助各位显著降低错误数量并带来诸多收益。
2.未使用$applyAsync
由于在AngularJS当中调用$digest()不存在轮询机制,因此其只会执行现有指令。$applyAsync则能够帮助我们有效延迟表达式解析,直到下一个$digest()周期的来临。大家可以选择以手动或者自动方式使用$applyAsync。
3. 使用jQuery
在处理事件以及实现AJAX操作时,jQuery已经成为一套能够显著降低DOM操作难度的库选项。但在另一方面,AngularJS的设计初衷在于提供一套能够创建可扩展性应用程序的框架。其主要关注侧重在于应用程序的开发与测试环节,因此其无法被用于在HTML页面中实现扩展。换言之,在这种情况下我们并不需要使用jQuery。这时大家的理想选择应该是让自己的代码在进行声明之后超越HTML语法。
AngularJS在这方面拥有多项功能可供选择,开发人员应该能够从中找到最理想的实现方案,而非一味使用jQuery。如果大家必须要进行DOM操作,那么在指令中直接实现即可——而并不一定需要涉及jQuery。
4.未对应用程序进行优化
缺乏必要优化几乎必然会引发AngularJS错误。以下示例解释了控制器中的代码如何拖慢处理速度并导致潜在错误:
this.maxPrice = '100'; this.price = '55’; $scope.$watch('MC.price', function (newVal) { if (newVal || newVal === 0) { for (var i = 0; i < 987; i++) { console.log('ALL YOUR BASE ARE BELONG TO US'); } } });
作为解决方案,我们可以尝试在输入内容中添加一项超时。
5.在非必要情况下使用scope隔离
如果大家希望使用一条指令,且确保其只被应用于单一位置且不会在环境中引发其它意料之外的冲突,那么其实并不一定要使用scope隔离机制——这有可能反而造成错误。在这里需要强调的是,我们无法在单一元素当中同时使用两条scope隔离指令。另外,在进行嵌套、事件处理或者继承等操作时,scope隔离也有可能引发问题。
6. 使用过多观察程序
对于每一次联编,AngularJS都会为其创建一个观察程序。而在每个digest阶段,观察程序都会与之前的联编进行对比与评估,AngularJS将这一过程称为脏检查。大家可以想象一下,当这一系列流程结束之后,最终会剩下多少观察程序。
其实约束观察程序数量的办法非常简单,大家只需要在确定scope模型不会发生变更的情况下不对其进行观察即可。这意味着观察程序数量将大幅减少,而由此引发错误的机率也会显著降低。
7.忽视controllerAs语法
$scope常常被用于将某个模型分配至某个控制器对象。不过在这种情况下,注入scope一般并不是最理想的处理方式。相反,我们推荐大家选择controllerAs语法来实现这一目标。下面通过代码共同了解如何利用controllerAs语法进行模型定义:
function MainController($scope) { this.foo = 1; var that = this; var setBar = function () { // that.bar = {someProperty: 2}; this.bar = {someProperty: 2}; }; setBar.call(this); // there are other conventions: // var MC = this; // setBar.call(this); when using 'this' inside setBar() }
controllerAs语法能够显著改善结果混乱的状况,特别是在我们需要处理大量嵌套scope的情况下。它还能够以多种其它方式加以运用,从而帮助我们更轻松地实现应用程序构建。
8. 负载强度过大
很多Web开发人员倾向于在AngularJS当中使用大量高强度处理线程,而克服这一坏习惯之后,我们可以使用工作线程并避免由高强度处理任务带来的诸多错误。高强度处理任务可能导致浏览器陷入卡死。工作线程是解决这类问题的好办法,我们只需要直接使用工作线程机制即可,其能够显著降低大规模复杂对象的处理难度。
9.未能根据需要使用controllerAs语法
controllerAs语法具备极高的实用性,而且能够帮助大家在构建应用程序时拥有更出色的代码成果。当下开发人员的常见错误之一就是未能对其加以充分运用并发挥其巨大潜能。事实上,当我们将某套模型分配至某控制器工具时,controllerAs语法应当是首选的实现机制。它还拥有一系列其它高实用度功能。下面通过代码示例一起了解:
function MainController($scope) { this.title = 'Some title'; $scope.$watch(angular.bind(this, function () { return this.title; }), function (newVal, oldVal) { // handle changes }); }
10. 未能充分理解解析器
基本上,解析器的介入会增加我们在载入视图时的实际时间。大家不应过度使用解析器,因为这意味着网站的加载时间会因此延长,并最终导致令人难以忍受的访问体验。
其中一部分错误会引发Web开发人员最不希望看到的结果。而只要大家在开发工作当中考虑到这些问题的存在并加以解决,那么很多错误将根本不会出现,这也就免除了我们被迫从头开始重新进行代码编写的可能性。
原文标题:10 Mistakes to Avoid on AngularJS
   


来源链接: http://www.techweb.com.cn/network/system/2015-12-09/2238510.shtml

该用户从未签到

2

主题

242

回帖

488

积分

中级魔扣

Rank: 3Rank: 3

魔扣币
244
贡献
244
威望
0
发表于 2018-8-26 19:32:55 | 显示全部楼层
感谢您美好的祝福!懂得欣赏的人,找到的是感觉;懂得知足的人,找到的是快乐;懂得珍惜的人,找到的是幸福;懂得关怀的人,找到的是朋友;懂得抓机遇的人,找到的是成功路;魔扣源码论坛真心祝愿朋您的人生梦想全部实现!

该用户从未签到

1

主题

248

回帖

498

积分

中级魔扣

Rank: 3Rank: 3

魔扣币
249
贡献
249
威望
0
发表于 2018-12-1 18:40:07 | 显示全部楼层
人生就像是一次浪漫的旅游,每一站都会和不同的人擦肩,有的渐行渐远、有的从此结缘,我珍惜每一个有“缘”能结识的好友,忙碌的时候、魔扣源码论坛也没能忘记你曾带给我的每一份情谊。

该用户从未签到

0

主题

259

回帖

519

积分

高级魔扣

Rank: 4

魔扣币
260
贡献
260
威望
0
发表于 2019-2-26 23:14:25 | 显示全部楼层
为你这无私奉献的精神所深深的折服,特此颁发好人证,以此鼓励!

该用户从未签到

2

主题

225

回帖

453

积分

中级魔扣

Rank: 3Rank: 3

魔扣币
226
贡献
226
威望
0
发表于 2019-4-11 23:25:07 来自手机 | 显示全部楼层
人世间的每一分温暖和友情,朋友间的每一个牵挂和祝福,都是心灵与心灵的交融!我珍惜我生命中每一个与我有缘的朋友!魔扣源码论坛让我们在交流中理解,在理解中前行!

该用户从未签到

0

主题

257

回帖

514

积分

高级魔扣

Rank: 4

魔扣币
257
贡献
257
威望
0
发表于 2019-5-6 16:10:00 来自手机 | 显示全部楼层
伤心最大的建设性,在于明白,那颗心还在老地方。',

该用户从未签到

2

主题

238

回帖

476

积分

中级魔扣

Rank: 3Rank: 3

魔扣币
236
贡献
236
威望
0
发表于 2020-1-28 14:42:05 | 显示全部楼层
一声问候,让我们不再陌生;一句祝福,魔扣源码论坛,让我们不再遥远;留言中有你,感觉温馨;交流中有你,感觉亲切;空间有你,感觉精彩。

该用户从未签到

2

主题

263

回帖

528

积分

高级魔扣

Rank: 4

魔扣币
263
贡献
263
威望
0
发表于 2020-4-19 14:43:16 来自手机 | 显示全部楼层
你喜欢的人也喜欢你,你想念的人也正在想念你。这就是全世界最重要的事情,拿什么都不能换。',
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 联系我们
  • 新浪微博 :
  • 在线客服 :魔扣科技 
  • 源码QQ群 :魔扣源码论坛官方总群
  • 联系邮箱 :charlin#morko.net
  • 微信扫一扫
快速回复 返回顶部 返回列表