【问题标题】:Attribute Directives VS Component Styles?属性指令 VS 组件样式?
【发布时间】:2016-11-30 18:48:36
【问题描述】:

Angular 2:何时使用属性指令以及何时使用组件样式?

official Angular 2 Docs 中描述的 Angular 2 中有两种主要的元素样式设置方法。

  • 属性指令
  • 组件样式

组件样式可以通过以下方式实现:(模板内联样式、元数据中的样式 URL、模板链接标签、CSS @imports)

我对何时使用哪些方式将样式应用于元素感兴趣。

由于官方文档中都提到了它们,因此它们中的每一个都可能最好在某些情况下使用(在某些情况下甚至是模板内联样式??)?

文档演示属性指令正在响应用户事件。他们演示了没有事件的组件样式。

这是否意味着在大多数情况下,在应用样式以响应事件时使用属性指令是一个好习惯,而在应用样式而不应用事件时使用组件样式?

【问题讨论】:

    标签: angular


    【解决方案1】:

    官方样式指南 (https://angular.io/docs/ts/latest/guide/style-guide.html) 建议在样式和模板包含超过 3 行时将其分开 (https://angular.io/docs/ts/latest/guide/style-guide.html#!#05-04)

    【讨论】:

      【解决方案2】:

      我刚刚发现的official angular 2 style guide 的另一个提示:

      style 06-01

      当你的表示逻辑没有 模板。

      我能想到在没有模板的情况下使用表示逻辑的唯一原因是让它在多个组件中可用。

      我们可以很容易地用:hover 定义一个全局css 样式并在一对多模板中使用它。那也是

      没有模板的展示逻辑

      用法上的区别是:

      <div tohHighlight>Bombasta</div><div class="tohHighlight">Bombasta</div>

      我真的看不出一个比另一个有什么好处,但是 Angular 2 官方文档总是演示带有事件的属性指令,并且对于任何不涉及事件的样式,他们使用 css。

      在这个样式为 06-01 的示例中,它再次出现在事件中(鼠标悬停)。

      所以我认为他们认为最好在涉及事件时使用属性指令。

      我刚刚学习 Angular 2,所以不确定每种样式的优缺点,但这里有一些我能想到的可能的方法:

      属性指令相对于 css 的可能优势

      • 选择器可能比全局 css 选择器更简单(全局 css 选择器可能会变得混乱,如果操作不正确,则无法选择预期的元素)。
      • (我认为)您将属性指令导入组件中,这表明了使用它的意图(可读性)。
      • 属性指令不是全局的,您必须导入它才能使用它。

      属性指令相对于 css 的可能缺点

      • 但是,属性指令需要更多代码,并且可能是一个单独的文件以作为最佳实践,因此它可能会更“重”一些。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-30
        • 2017-10-05
        • 2014-04-20
        • 1970-01-01
        相关资源
        最近更新 更多