我刚刚开始使用角2,我想知道为什么像selector和template这样的属性被放在组件装饰器中,而不是在组件类中。
在角度2中使用所有这些装饰器有什么意义?
发布于 2016-06-28 10:37:25
除了已经存在的特定于平台的答案之外,我还想从一个更通用的角度进行分析。在我看来,这个问题在某种程度上与选择装饰图案而不是继承(例如@Component vs extends Component)有关。
使用装饰器的一些好处是:
1.关注点分离:
装饰器中的信息是声明性的,它们定义了类的行为,很可能不会随着时间的推移而改变,并被框架使用。类属性和字段是类特定的数据,将始终被处理和频繁更新,并且只有在类本身中才有意义。这两种数据不应混为一谈。
2.支持多个修改
由于金刚石问题,许多语言都会阻止多重继承。另一方面,一个类可以有多个装饰器,用于不同的目的(例如@Component和不推荐的@RouteConfig)。
发布于 2016-06-28 07:54:23
一般来说,装饰器允许您执行函数。例如,@Component执行从Angular2导入的Component函数。在幕后,这些装饰器在类上定义了一些元数据。这允许您将类配置为将其“标记”为组件。然后,Angular2能够将模板中的选择器链接到这样的类。
这篇文章可以给您更多的提示,说明下面发生了什么:
您可以注意到,装饰器可以在不同级别(类、类属性、方法参数)应用于TypeScript。
发布于 2018-12-13 14:33:25
在角度上,我们为任何东西创建类,如组件、服务、指令,
那么,如何编译您的代码并将其转换为可以在浏览器中运行的脚本呢?这是因为装潢工的缘故。简单地说,您可以说装饰器允许您将元数据附加到类型记录类,使用它的角度可以知道该类是组件还是指令,还是模块等等。
https://stackoverflow.com/questions/38069790
复制相似问题