是否有关于使用AngularJS过多指令的指导?

时间:2014-06-10 02:37:40

标签: angularjs angularjs-directive

对于所有事情都使用指令是不好的做法,在形式上还是在表现方面?我开始将它们看作是渲染HTML的函数,就像函数一样,它们在非常谨慎和组合时变得有用。

但是,我开始担心这会导致性能不佳或指令过载。这是我想如何使用它们的一个例子 - 我对反馈很感兴趣,尤其是关于性能的反馈等。

  <!-- This could even be wrapped in a my-editing-area-navbar directive -->
  <my-navbard heading="{{pg.constants.navHeader}}">
    <my-jump-to-page></my-jump-to-page>

    <my-divider></my-divider>

    <my-undo></my-undo>
    <my-redo></my-redo>

    <my-divider></my-divider>

    <my-clear></my-clear>

    <my-accept-and-continue acceptFunction="pg.acceptAndContinue()"></my-accept-and-continue>

    <my-divider></my-divider>

    <my-reset-utility></my-reset-utility>
  </my-navbar>

  <my-left-column heading="{{pg.constants.leftColHeading}}">
    <my-preview-component></my-preview-component>

    <my-debug-utility ng-if="{{pg.showDebug}}"></my-debug-utility>
  </my-left-column>

  <my-main-content heading="{{pg.constants.mainHeading}}" subheading="{{pg.constants.mainSubheading}}">
      <my-message-viewer></my-message-viewer>

      <my-content-mainpulator>
        <my-content-frobber></my-content-frobber>

        <my-dohicky></my-dohicky>
      </my-content-mainpulator>
  </my-main-content>
</my-page>

1 个答案:

答案 0 :(得分:2)

在我看来,几乎任何小型,模块化和可重复使用的东西都应该在指令中。保持DRY。如果它真的特定于控制器/视图,那么实际上没有必要将它抽象成它自己的东西。

我不能谈论性能,但是我所使用的指令性重型应用程序都没有感到迟钝或任何东西。而且我愿意交换指令所提供的封装和重用可能带来的性能损失。

我看到的指令与任何其他专门的html元素(输入框,文本区域等)的方式相同,并且以相同的方式使用它们(当你知道角度朝向使用{{3时更有意义] }})。只要确保它编码良好,你就不应该看到性能问题。