什么时候应该使用组件而不是指令?

When should I use a component instead of a directive?

Angular 1.5 介绍 components:

In Angular, a Component is a special kind of directive that uses a simpler configuration which is suitable for a component-based application structure.

与指令相比,我似乎真的找不到使用它们的任何优势。据我所知,它们的功能较少(例如,不再有 compilelink 函数)并引入了一些稍微不同的语法。

使用它的文档,因为它是 "simpler",将有助于过渡到 Angular 2,但我们在 Angular 2 中仍然有指令,对吗?我应该将我的指令转换为 Angular 1.5 应用程序中的组件吗?

Angular 2

A Component 有视图,它是 UI 的一部分。 指令没有。

就是这么简单,如果您的元素有一个 view/template 那么它就是一个组件。 如果只是需要获取元素,更改属性,注册到事件 -> 指令。

Angular 1

在 angular1 中,组件是指令的外观。换句话说,组件(在 angular 1.5+ 中)是一个用于创建指令的工厂。使用组件是最佳实践,因为它以 "right" 方式创建指令。 Angular1 中的指令是超级可配置的,并且有很多选项导致 angular 的实施不佳和 PR 不佳 :) 因此添加该组件以帮助开发人员以正确的方式创建指令(否范围,一致的控制器等...)