Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS 1.5中组件和指令之间的主要区别是什么?_Angularjs_Angular Directive - Fatal编程技术网

AngularJS 1.5中组件和指令之间的主要区别是什么?

AngularJS 1.5中组件和指令之间的主要区别是什么?,angularjs,angular-directive,Angularjs,Angular Directive,我发现很难理解组件和指令之间的真正区别。我现在明白了,组件是一个简单得多的概念 考虑到这一点,在使用AngularJS 1.5时是否有理由继续使用指令 也许我在这里遗漏了真正的上下文,但似乎组件提供了一个更简单的API 那么,我必须继续使用指令的原因是什么 Angular 2声明所有东西都是一个组件,因此努力实现从1.5到2的简单迁移,只使用组件是否有意义 在过去,我使用指令来创建,例如,一个自动查找文本框,现在我没有理由不在组件中这样做,对吗?然后我可以在我创建的其他组件中重复使用这个组件?只

我发现很难理解组件和指令之间的真正区别。我现在明白了,组件是一个简单得多的概念

考虑到这一点,在使用AngularJS 1.5时是否有理由继续使用指令

也许我在这里遗漏了真正的上下文,但似乎组件提供了一个更简单的API

那么,我必须继续使用指令的原因是什么

Angular 2声明所有东西都是一个组件,因此努力实现从1.5到2的简单迁移,只使用组件是否有意义


在过去,我使用指令来创建,例如,一个自动查找文本框,现在我没有理由不在组件中这样做,对吗?然后我可以在我创建的其他组件中重复使用这个组件?

只需复制角度文档,因为它们以我能想到的最佳方式放置

了解组件

在Angular中,组件是一种特殊的指令,它使用 更简单的配置,适用于基于组件的 应用程序结构

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

组件的优点:

  • 比普通指令更简单的配置
  • 推广合理的默认值和最佳实践
  • 针对基于组件的体系结构进行了优化
  • 编写组件指令将使升级到Angular 2更容易
不使用组件时:

  • 对于依赖于DOM操作的指令,添加事件侦听器等,因为编译和链接函数是 不可用
  • 当您需要高级指令定义选项时,如优先级、终端、多元素
  • 当您需要由属性或CSS类而不是元素触发的指令时

更多阅读:

受本文启发,我将尝试从高层角度进行解释()。它表示Angular2,但在AngularJs上下文中也很有用

指令

在计算机科学中有“指令Pragma”的概念。根据维基百科:

在计算机编程中,指令pragma(来自“语用”)是一种语言结构,用于指定编译器(或汇编程序或解释器)应如何处理其输入。指令不是语言本身的一部分

这与AngularJS文档给出的描述非常吻合:

在高层,指令是DOM元素(如属性、元素名称、注释或CSS类)上的标记,它告诉AngularJS的HTML编译器($compile)将指定的行为附加到该DOM元素(例如通过事件侦听器),甚至转换DOM元素及其子元素

因此,指令基本上是向(角度)编译器发出指令,以改变DOM或其行为

组件

AngularJS中的组件是一个特殊指令;他们试图模仿web组件,正如AngularJS文档所述:

在AngularJS中,组件是一种特殊的指令,它使用更简单的配置,适用于基于组件的应用程序结构

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

什么时候用什么?

就我个人而言,我使用组件,除非有充分的理由不这样做

其中一些原因在AngularJS组件文档中给出:

  • 用于需要在编译和预链接函数中执行操作的指令,因为它们不可用
  • 当您需要高级指令定义选项时,如优先级、终端、多元素
  • 当您需要由属性或CSS类而不是元素触发的指令时
另一种说法是:

指令是一种机制,通过它我们可以将行为附加到DOM中的元素

组件是一种特定类型的指令,它使利用web组件功能成为可能—在整个应用程序中都可以使用封装的、可重用的元素

可能的结论

我认为,一旦你理解了组件是一个指令,这个问题就没有那么好了。这两个概念并不试图解决同一个问题。组件是一个扩展,它允许使用指令来构建基于组件的web应用程序

深入

托德的座右铭在这篇小文章中分享了他关于这个话题的知识

一个指令装饰DOM,它添加行为并扩展现有DOM。当您使用.component()时,您创建DOM;当您使用.directive()时,您装饰DOM,这就是心态


如果您能提到这些差异,那就太好了:)