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

尼克克斯多姆

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

我一直在玩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 条评论
登录 后参与评论

相关文章