2016-07-13 195 views
19

我发现很难理解组件和指令之间的真正区别。我现在明白,组件是一个更容易的概念。Angular 1.5:指令与组件?

因此,记住这一点,是否有任何理由继续使用指令时使用角1.5?

也许我错过了这里的真实上下文,但看起来组件提供了一个更简单的API。

那么,我有什么理由继续使用指令?

Angular 2声明,所有东西都是一个组件,所以为了从1.5到2的简单迁移而努力,仅仅使用向前推进的组件是否没有意义?

在过去,我已经使用指令来创建,例如,自动查找文本框,没有理由为什么我现在不应该这样做现在组件内权利?然后我可以在我创建的其他组件中重新使用这个组件?

我真的很感激,如果任何人都可以确认我应该做的和推荐的方式前进。

感谢

回答

24

仅仅复制角文档,因为他们把它最好的办法我能想到

了解组件

在折角,组件是一种特殊的指令,该指令使用适用于基于组件的应用程序结构的更简单的配置。

这使得以类似于使用Web组件或使用Angular 2风格的应用程序体系结构的方式编写应用变得更加容易。组件

优点:

  • 简单比普通指令配置
  • 促进健全的默认值和最佳实践
  • 基于组件的架构
  • 写作部分的指令优化,将使它更容易升级到 Angular 2

当n OT使用部首:

  • 对于依赖于DOM操作指令,将事件侦听器 等,因为编译和链接功能不可用
  • 当你需要高级指令定义选项,如优先级, 端子,多 - 元素
  • 当你想由一个属性或CSS 类引发的指令,而非元素

更多阅读:https://docs.angularjs.org/guide/component

+0

如果你提到的差异,它会很棒:) –

0

组件基本上只是为基于组件的体系结构设计的一种新型指令。在很多方面,组件的功能受到更多限制,反而鼓励更好的约定和设计,实际上导致更多可维护和可重用的代码。

例如,组件强制隔离作用域并强烈鼓励单向绑定。为什么这很重要?因为这更好地封装了组件,并且阻止您创建与父元素或范围紧密结合的组件。这意味着你以这样的方式编写组件,以便将来可以在未经修改的情况下重用该组件(而不是像许多人倾向于做的那样复制和粘贴重用)。这也使跟踪和控制交互和数据更改变得更加容易。

组件仍然可以与父范围进行交互,但是这是通过绑定到组件事件的回调完成的。再一次,这种限制迫使或者至少强烈地鼓励软件设计,使得更容易重用你的组件并掌握组件如何与父范围和外部元素进行交互。

可以使用AngularJS模块的.component()方法(由angular.module()返回)注册组件。该方法有两个参数:

1)组件的名称(作为字符串)。

2)组件配置对象。 (需要注意的是,不像.directive()方法,这个方法并不需要一个工厂函数)。

// for指令

module.directive(姓名,FN);

//用于组分

模块。组件(名称,选项);