Angular中组件的字符串@Input属性的属性绑定与属性绑定?

Tit*_*tan 5 html html5 binding angular

要设置@Input()组件的字符串属性,我们可以使用两种语法:

<my-component caption="Hello there" type="primary" someThing="text value"></my-component>

要么:

<my-component [caption]="'Hello there'" [type]="'primary'" [someThing]="'text value'"></my-component>

我完全知道这两种绑定之间的区别。问题是:如果我有一堆要静态设置的字符串@Input()属性,我可以使用简单的属性绑定语法(第一个示例)而不是更多的“肉”属性绑定语法(第二个示例)吗?

有什么建议,为什么?即是要权衡些什么,即使设置静态字符串输入,始终使用属性绑定还是更可取的呢?

这是我能想到的一些缺点:

  • 属性绑定实际上是作为HTML属性应用的,例如,用户可以通过浏览器的dev工具轻松查看/更改它们。属性绑定不是标记的一部分。
  • 属性绑定可能会与实际的HTML属性名称发生冲突(除非您给它们加上前缀,否则会data- 破坏简单性的整个目的)。已经咬住我的实际例子是title属性。
  • 使用Angular Language Service进行属性绑定的标记中没有智能。

但是主要优点是简单。在上面的示例中,您将同意第一种形式更优雅。在我的项目中,似乎很多属性都是常量(一次性设置)字符串属性,并且语法在可读性方面产生了实际差异。

那么...对自定义(非HTML)字符串属性使用属性绑定语法是一种不好的做法吗?(鉴于我知道/可以接受上述列出的一些限制的事实)

小智 2

我想补充以下几点:

  • Attributes只是简单的static fields
  • attributes当成为时,有一条细线properties
  • 简单性不是这里的目标,modularity而且reuse-ability确实是。
  • Property binding给你更多的控制权,你可以在任何类似的场景中component使用。componentdata-drivenstatic
  • 一个component构建版本property binding可用于 20 个不同的项目。
  • 但如果您没有这样的要求,那么您可以使用attributes. 他们很好。
  • 我不会说哪一个更好,两者都有各自的用例,但总的来说property bindings更强大和灵活。

我想向所有读者提及的最后一件事是:
在前端开发中任何人都可以修改代码。我们使用验证只是为了提供流畅的用户体验。除此之外,任何人都可以根据需要获取代码或更改 HTML,这就是我们使用服务器端验证的原因。角管道很复杂但可以破解。用户可以包装 JSON 对象并将其发送到服务器,绕过我们的所有验证。所以对于所有刚入门的前端开发者来说,我们不会太在意安全性,我们会尽力给予良好的用户体验。