角度和语义标记/关注点分离

尼克克斯多姆

也许这不是问这个问题的好地方,但我会尽力使它尽可能客观和负责任。

我一直在玩Angular.js并很喜欢它,但是我对它的哲学有疑问。这是来自Angular站点的控制器代码段。

   <div ng-controller="TodoCtrl">
      <span>{{remaining()}} of {{todos.length}} remaining</span>
      [ <a href="" ng-click="archive()">archive</a> ]
      <ul class="unstyled">
        <li ng-repeat="todo in todos">
          <input type="checkbox" ng-model="todo.done">
          <span class="done-{{todo.done}}">{{todo.text}}</span>
        </li>
      </ul>
      <form ng-submit="addTodo()">
        <input type="text" ng-model="todoText"  size="30"
               placeholder="add new todo here">
        <input class="btn-primary" type="submit" value="add">
      </form>
    </div>

这基本上是HTML在Angular指令中添加的。我发现可能有疑问的一个是:<a href="" ng-click="archive()">archive</a>

当Jeffrey Zeldman撰写Designing With Web Standards时,将标记(HTML),表示(CSS)和交互(JS)分离到不同文件中以实现可维护性成为了最佳实践。

我的问题是,Angular如何不违反它?我实际上很喜欢它,并且发现它非常强大,但是将click事件绑定到a标记中元素与编写此Web标准前代码的痕迹之间有什么区别

<a href='#' onClick='showAlert()'>Click here</a>

<script>
    var showAlert = function(){
      alert('hey');
    }
</script>

有用的答案除了使用框架的个人经验外,还可能参考文档。

凡人

我将从您可能会怀疑的那段代码开始,以及在AngularJS与纯HTML和Javascript处理该代码之间的根本区别。

这基本上是带有Angular指令的HTML。我发现潜在的怀疑是:<a href="" ng-click="archive()">archive</a>

这看起来非常类似于我们十年前写的东西:

<a href="" onclick="archive()">archive</a>

但是,上述HTML和AngularJS实现之间存在根本的区别。对于AngularJS,该archive函数位于我们控制的范围内,可以通过使用控制器进行操作。原始JS示例要求将archive其放在全局命名空间中(由于许多原因,这很糟糕)。

但是,我们仍然可以看到onclick事件绑定的含义;它的目的是使人们能够声明性地将行为构建到视图中,并让JS处理实现细节。AngularJS做到了这一点,并且提供了一种以常规HTML无法实现的方式组织视图的不同范围/上下文的方法。

是的,AngularJS涉及通过移动更多演示文稿并将关注点绑定到视图中来扩展HTML。好消息是我们正朝着HTML6前进。以下是一些来自http://html6spec.com/的精选报价

想象一下,能够以您想要标记的方式标记某些内容。试想一下,改变<div id="wrapper"><wrapper>...

网络正朝着巨大的应用程序商店迈进,我们需要拥抱它。我们使用的标记不应该对我们不利,它应该对我们有用。该规范就是这样做的。为了最终摆脱繁琐的规则和标准,并给我们(开发人员)完全自由的编码,我们希望为网络提供一个更具语义性,简洁性和可读性的标记。

在某种程度上,AngularJS带给我们HTML6的所有优点,但是现在允许我们使用它。在过去的15年中,网络的使用方式已发生了巨大变化,我们的工具仍然远远落后。对我们来说幸运的是,未来是光明与希望的灯塔,AngularJS将未来带回到了现在。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

角度和语义标记/关注点分离

来自分类Dev

关注点分离

来自分类Dev

Java,Netbeans和关注点分离

来自分类Dev

AngularJS和分析-分离关注点

来自分类Dev

Java,Netbeans和关注点分离

来自分类Dev

PushSharp关注点分离

来自分类Dev

PushSharp关注点分离

来自分类Dev

WCF关注点分离与DRY

来自分类Dev

WPF中的关注点分离

来自分类Dev

两类关注点分离

来自分类Dev

WPF中的关注点分离

来自分类Dev

Mongo DB如何分离关注点

来自分类Dev

Docker关注点/服务分离

来自分类Dev

Symfony 3 - 关注点分离?

来自分类Dev

使用实体框架7和asp.net 5保持关注点分离

来自分类Dev

在windowscope中拆分CDI bean,以分离关注点

来自分类Dev

Rails 4多态关联和关注点

来自分类Dev

CakePHP 3中的MVC-模型与视图之间的关注点分离

来自分类Dev

ASP.NET MVC:普通/管理员用户的关注点分离

来自分类Dev

为什么在这种情况下我需要分离关注点?

来自分类Dev

清理视图红宝石逻辑并将关注点分离到模型/控制器中

来自分类Dev

iOS Swift Xcode 6对情节提要中的视图控制器委托的关注点分离

来自分类Dev

基于类的环境中关注点/代码结构的分离(以C#为例)

来自分类Dev

测试消耗其他组件的组件时,关注点分离是什么?

来自分类Dev

使用ng-pattern进行验证是否违反关注点分离?

来自分类Dev

Winforms / Devexpress / Tab控件关注点分离/常规代码布局

来自分类Dev

iOS Swift Xcode 6对情节提要中的视图控制器委托的关注点分离

来自分类Dev

基于类的环境中关注点/代码结构的分离(以C#为例)

来自分类Dev

在哪里可以找到负责显示Windows的Messenger的好地方,以确保不违反MVVM模式的关注点分离和可测试性?

Related 相关文章

热门标签

归档