Зачем вам `check()` аргументы данных шаблонов Blaze на стороне клиента?
Я очень хорошо понимаю, почему вы check()
методы и публикации аргументы на стороне сервера, но зачем вам это нужно, когда данные находятся на стороне клиента, учитывая, что они могут быть подделаны на каждом уровне?
Я видел, что это чужой код, и я хотел бы знать, есть ли для этого веская причина.
Например:
Template.MyTemplate.onCreated(function() {
check(this.data.arg1, String);
check(this.data.arg2, String);
this.subscribe('mysub', this.data.arg1);
});
1 ответ
Вы могли (должны) сделать это для того, чтобы
обеспечить согласованное поведение после сеанса рефакторинга (будут возникать ошибки, если вы изменили имена или типы входных данных шаблона)
применять необходимые данные шаблона при совместной работе с другими разработчиками, чтобы они получали ошибки при вводе шаблона с неверными данными
применять требуемые данные шаблона, когда вы создаете много сложных шаблонов, которые взаимодействуют друг с другом, в основном так же, как указано выше
создайте первый фильтр ввода на стороне клиента, например, когда для этого шаблона требуется ввод данных пользователем в качестве параметра для его подписки (обратите внимание, что это не функция безопасности, но она может улучшить UX)
Используйте это в сочетании с вашими тестами пользовательского интерфейса, чтобы выявить ошибки после изменения кода и сделать ваш пользовательский интерфейс более надежным.
Конечно, вы могли бы оставить check
и позволить ошибкам быть добавленными в код компонента где-то еще, но с этим вы можете немедленно изолировать ошибки на уровне создания.