Зачем вам `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 и позволить ошибкам быть добавленными в код компонента где-то еще, но с этим вы можете немедленно изолировать ошибки на уровне создания.

Другие вопросы по тегам