【发布时间】:2013-09-19 17:35:13
【问题描述】:
我一直在研究 Angular,它使用 HTML 属性将事件绑定到模型,例如:
<form ng-submit="addTodo()">
这样做不被认为是一种不好的做法吗?我知道使用内联 JavaScript(如 onclick)被认为是一件非常糟糕的事情。
我担心关注点分离。这种方法不反对吗?在 JavaScript 中使用 id 或 class 属性并将事件绑定到基于它们的 DOM 元素不是更干净吗?这似乎不那么混乱了。
我还担心 ng 属性会降低 HTML 的语义。 HTML 应尽可能保持语义化,仅包含表示信息。
我目前正在调查是否将 Angular 用于我正在开发的网络应用程序,这是我的担忧之一。目前,我更倾向于将 vanilla JS 与 RequireJS 之类的东西一起使用。
【问题讨论】:
-
我认为您误解了 Angular 的基本性质,例如 groups.google.com/forum/#!msg/angular/kqZDVSUlkd0/sge6KsaaKQAJ。它不是客户端上的“JavaScript + HTML”,而是“Angular”,一个恰好通过 HTML 和 Angular 属性指定的客户端 MVC 框架。
-
看看silverlight ...如果你想要被动视图,我可以理解但忘记了AngularJS,这个框架是以视图为中心的。将 Backbone 与 ModelBinder 一起使用,我认为你会得到你想要的,但 API 更少,而且仍然有很多样板
-
@DaveNewton 谢谢。我有点怀疑。您说它不是 JavaScript + HTML,但它仍然适用于浏览器。浏览器仍将 HTML 解析为 DOM,因此应遵循规范和标准。我将进一步调查这个问题。
-
@ThomasPons 我过去曾使用过一点 SilverLight(好吧,它现在已经死了,就像 Flash 一样)。由于它使用 XAML,因此不能与 HTML 进行很好的比较。我想要没有事件绑定的视图。
-
@RichardKnop 您认为没有遵循什么标准?该标准允许内联 JS,它的约定和实用性使人们远离它。如果您使用的是 Angular,那么将视图与事件和数据分离是没有意义的:这就是 Angular 。
标签: javascript html angularjs semantic-web separation-of-concerns