你为什么要 `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
排除在外,让错误在组件代码中的其他地方抛出,但这样您就可以在创建级别立即隔离错误。
我非常理解为什么你会 check()
服务器端的方法和发布参数,但是当数据在客户端时你为什么需要,考虑到它可能在每个级别被篡改?
我看到那是别人的代码,我想知道是否有充分的理由。
例如:
Template.MyTemplate.onCreated(function() {
check(this.data.arg1, String);
check(this.data.arg2, String);
this.subscribe('mysub', this.data.arg1);
});
您可以(应该)这样做,以便
重构会话后强制执行一致的行为(如果您更改模板输入的名称或类型将抛出错误)
在您与其他开发人员一起工作时强制执行所需的模板数据,以便他们在为您的模板提供错误输入时出错
当您创建许多相互交互的复杂模板时强制执行所需的模板数据,与上面的点基本相同
在客户端创建第一个输入过滤器,例如当此模板需要用户输入作为其订阅的参数时(请注意,这不是安全功能,但它可以改善用户体验)
将此与您的 UI 测试结合使用,以便在代码更改后发现错误并使您的 UI 更健壮。
当然,您可以将 check
排除在外,让错误在组件代码中的其他地方抛出,但这样您就可以在创建级别立即隔离错误。