你为什么要 `check()` 客户端 Blaze 模板数据参数?

Why would you `check()` client side Blaze templates data arguments?

我非常理解为什么你会 check() 服务器端的方法和发布参数,但是当数据在客户端时你为什么需要,考虑到它可能在每个级别被篡改?

我看到那是别人的代码,我想知道是否有充分的理由。

例如:

Template.MyTemplate.onCreated(function() {

  check(this.data.arg1, String);
  check(this.data.arg2, String);

  this.subscribe('mysub', this.data.arg1);
});

您可以(应该)这样做,以便

  • 重构会话后强制执行一致的行为(如果您更改模板输入的名称或类型将抛出错误)

  • 在您与其他开发人员一起工作时强制执行所需的模板数据,以便他们在为您的模板提供错误输入时出错

  • 当您创建许多相互交互的复杂模板时强制执行所需的模板数据,与上面的点基本相同

  • 在客户端创建第一个输入过滤器,例如当此模板需要用户输入作为其订阅的参数时(请注意,这不是安全功能,但它可以改善用户体验)

将此与您的 UI 测试结合使用,以便在代码更改后发现错误并使您的 UI 更健壮。

当然,您可以将 check 排除在外,让错误在组件代码中的其他地方抛出,但这样您就可以在创建级别立即隔离错误。