使用angular会带来许多奇怪的代码风格。例如,我一直认为这个
<button onclick="myFunction()">Click me</button>
我不应该使用的样式,除非我懒惰并想要快速和脏代码。我从未在项目中使用过这种风格,我甚至认为这很糟糕。
现在当我看到棱角分明
这是一个例子:
<div enter="loadMoreTweets()">Roll over to load more tweets</div>
来自那里 http://www.thinkster.io/pick/IgQdYAAt9V/angularjs-directives-talking-to-controllers
这是教程的好风格。我不懂。那么这意味着早期的onclick示例也非常好吗?那么为什么没有人使用它至少这些天人们使用大量的jquery呢?
答案 0 :(得分:5)
让我引用布拉德格林和他的一本书Angular。 Shyam Seshardi
不引人注目的JavaScript的想法已经被解释了许多方面,但理由 对于这种编码风格,有以下几点:
- 不是每个人的浏览器都支持JavaScript。让每个人都能看到您的所有内容并使用您的应用,而无需执行代码 浏览器。
- 有些人使用不同的浏览器。视力受损的人使用屏幕阅读器和一些手机用户无法使用 使用JavaScript的网站。
- Javascript在不同平台上的工作方式不同。 IE通常是这里的罪魁祸首。您需要进行不同的事件处理 代码取决于浏览器。
- 这些事件处理程序引用全局命名空间中的函数。当您尝试集成其他库时,它会让您头疼 具有相同名称的功能。
- 这些事件处理程序结合了结构和行为。这使您的代码更难以维护,扩展和理解。
醇>在大多数情况下,当你用这种风格编写JavaScript时,生活会更好。 然而,有一件事并不是更好,那就是代码复杂性和 可读性。而不是使用。声明事件处理程序操作 他们行动的元素,你通常不得不为这些元素分配ID, 获取对元素的引用,并设置事件处理程序 回调...
...
在Angular,我们决定重新检查这个问题。
自这些概念诞生以来世界发生了变化 ......
...对于大多数内联事件处理程序 Angular具有等效形式 ng-eventhandler =“expression”其中eventhandler将替换为 点击,mousedown,更改,等等。如果你想在什么时候得到通知 用户单击元素,只需使用ng-click指令即可 像这样:
<div ng-click="doSomething()">...</div>
你的大脑是否说“不,不,不!坏,坏,坏!“?好消息是 你可以放松一下。
这些指令与它们的事件处理程序前辈不同 它们:
- 在每个浏览器中都表现相同。 Angular为您处理差异。
- 无法对全局命名空间进行操作。您指定的表达式可以
要了解更多详情,请阅读以下书籍:http://www.amazon.com/AngularJS-Brad-Green/dp/1449344852
EXTEND
在评论中讨论之后,我想补充一点解释。
如上所述:Wikipedia - AngularJS:
Angular是一个框架,其目标是使用模型 - 视图 - 控制器 (MVC) 功能来增强基于浏览器的应用程序努力使开发和测试更容易
Model–view–controller,来自维基百科的简短摘录:
摘要:
这里最重要的部分是 View可以将Controllers操作发布给用户。这正是HTML中的函数调用所代表的内容。
答案 1 :(得分:1)
这是一个误解:
使用angular会带来许多奇怪的代码风格。例如,我一直认为这个
<button onclick="myFunction()">Click me</button>
我不应该使用的样式,除非我懒惰并想要快速和脏代码。我从未在项目中使用过这种风格,我甚至认为这很糟糕。
如果您可以在渲染HTML代码时决定要附加到按钮的事件处理程序,那么使用该样式的代码是完全有效的。使用jQuery,我们看到许多动态附加的事件处理程序,因为很多时候元素本身是动态插入的,或者是否附加事件监听器或附加什么是动态决定的。