Angular4 - component和directive的区

作者: yitalalww | 来源:发表于2017-07-03 11:20 被阅读1690次

指令

在AngularJS 1.x版本很重要的一个部分 - 指令,用过AngularJS的同学都不陌生(这是废话)。也写过很多自定义指令。如果你学习了Angular2或者以上版本(后文我们就特指Angular4),可能会觉得Component就是之前的指令,那么问题来了,Angular4中的component和directive有什么区别?本文将详细的对比二者区别;

AngularJS1.x中指令用法

AngularJS1.x版本中的指令具有2个用法

(1)在已经存在的dom元素上添加一些行为

(2)创建一个组件,附上一些行为

明确划分

在Angular4(在Angular2中就有,再次说明下,后面为了不再繁琐的说Angular2或者Angular4,统一称为Angular4) 中将二者明确的划分出来,component的用途是创建一个组件并附上一些行为,而directive则是在已经存在的dom元素上附加一些行为;二期详细区别如下:

(1)component使用的注解@Component修饰,directive使用注解@Directive来修饰

(2)component是通过组件化思想,基于组件来创建应用,把应用划分成细小的各个可重复使用的组件,遵循DRY原则(Don't repeat youself!),directive是用来在已经存在的dom元素上实现一些行为

(3)component是可重复使用的组件,directive是可重复使用的行为

(4)component有创建一个视图view,即有template或者templateUrl,directive则没有。

举例说明:

下图是一个指令,用以实现元素的“有无”,通过指令*showAuthed=“true/false”来实现不同权限状态下改dom元素的有无;可重复使用,这指令可以放在应用中的任何一个已存在的dom元素上,来根据权限状态来控制元素的有无,非常方便

相关文章

  • Angular4 - component和directive的区

    指令 在AngularJS 1.x版本很重要的一个部分 - 指令,用过AngularJS的同学都不陌生(这是废话)...

  • 从 Angular Component 和 Directive

    同 Angular service 的单例特性不同,Angular 组件和指令通常会被多次实例化,比如 HTML ...

  • 2018-08-30

    Angular4加载顺序 今天遇到了一个比较关于angular4加载组件顺序的坑,当我在app.component...

  • angularjs的directive和component的参数

    开发初期,API未准备好时,会采用静态参数传递,来调试组件功能,通常没啥问题,但是当调整为从后端API异步获取数据...

  • angular.js-component和directive

    angular.js组件化:为了达到ui的复用,将页面分成几部分。可以通过组件化来实现。

  • Angular JS 中directive和component

    在angular1.5的版本之前,都是以directive作为组件化的形式,而directive本身是一个指令,而...

  • 生命周期

    生命周期和钩子函数 Angular 中每个 component/directive 都有它自己的生命周期。包括创建...

  • angular2 JIT and AOT

    为什么需要编译 Angular应用中包含的组件、HTML模板(比如:@Directive、@Component、@...

  • 自定义指令

    一、基本用法 全局注册和局部注册,和组件类似,区别是把component 换成了 directive 二、钩子函数...

  • Runtime directive used on compon

    控制台警告提示信息 控制台警告Runtime directive used on component with n...

网友评论

  • b6a1e2501400:directive也可以有template吧

    <div ng-app="myApp" runoob-directive></div>

    <script>

    var app = angular.module("myApp", []);

    app.directive("runoobDirective", function() {
    return {
    template : "我在指令构造器中创建!"
    };
    });
    </script>
  • a66c1032a92b:指令之间的交互是怎么交互的呢?这一块很我理解的模糊
  • JamesSawyer:组件呢:no_mouth:
    yitalalww:组件就不列举了

本文标题:Angular4 - component和directive的区

本文链接:https://www.haomeiwen.com/subject/rvkacxtx.html