Совместное использование бэкэнда и входного интерфейса для проверки или модуля - PullRequest
2 голосов
/ 07 марта 2019

Я хочу поделиться подтверждением ввода, потому что:

  • Пользовательский интерфейс во внешнем интерфейсе, мгновенно сообщает пользователю, если ввод хороший / неправильный
  • Проблемы безопасности в бэкэнде, даже если пользователь обходит JavaScript, пользователь не может связываться с RESTful API
  • Кроме того, javascript во внешнем интерфейсе всегда зависит от браузера, который его интерпретирует, и ему нельзя доверять

Каков наилучший способ поделиться проверкой входных данных в полном веб-приложении на javascript (внешний интерфейс: реагировать, внутренний интерфейс: нодjs)?

Решение, о котором я думаю, - это создание модуля валидатора со всеми моими валидаторами javascript в корне моей кодовой базы:

  • Если на локальном хосте обе среды используют этот модуль для проверки ввода.
  • Если в production / preprod, мой сценарий развертывания скопирует модуль как во внешнем, так и во внутреннем интерфейсе перед развертыванием.
  • Код импорта будет выглядеть так каждый раз, когда я пытаюсь подтвердить ввод: const validator = process.env.ENV === 'local' ? require('../../validator') : require('/validator')

Существует ли какой-либо другой общепринятый метод для этого (я думаю, что это очень распространенная проблема, но я не нашел подобных проблем)? Если нет, мой метод правильный?

Ответы [ 3 ]

1 голос
/ 07 марта 2019

Хорошей практикой является использование проверок в качестве модуля, но вы должны подумать о том, что произойдет, если по какой-то причине вы захотите / захотите изменить внутреннюю технологию на нечто, не похожее на Javascript-подобный узел.

В случае, если вы собираетесь его реализовать - у вас будет зависимость клиента и сервера от этого модуля, и вам придется поддерживать разные версии этого модуля или развертывать клиентский код и код сервера каждый раз, когда у вас есть изменение проверки- что приводит к некоторой сложности, которую вы должны принять во внимание.

0 голосов
/ 12 мая 2019

Выводы из ответов и реализации:

  • Реализация работает и является хорошим способом воспользоваться полнофункциональным javascript-приложением
  • Это создает некоторую сложность, и вы должны быть осторожны, чтобы не реализовывать методы библиотек / javascript, которые не будут вести себя одинаково между двумя очень разными средами (в клиентском браузере и в бэкэнде nodejs). Таким образом, я не буду использовать стороннюю библиотеку и только ванильный javascript в моем валидаторе (пример: не используйте ключевое слово export в моем валидаторе, а используйте module.exports = {}, потому что ES6 export не будет работать в nodejs)
  • Если вы хотите избежать ошибок в рабочей среде, вы всегда должны развертывать как во внешнем, так и во внутреннем интерфейсе каждый раз, когда изменяете свой модуль validator и тестируете в обеих средах (я добавил скрипт, который запускается перед развертыванием и проверяет diff между 2 модуля)
  • Поскольку это заставляет меня выигрывать так много времени, теперь я также делюсь другим функциональным программированием в своем приложении
  • Понял, что этот способ использования вашего собственного модуля во многом похож на использование модуля npm как во внешнем, так и во внутреннем интерфейсе (это гораздо менее громоздко, чем необходимость публиковать его в реестре npm, если вы считаете, что это будет бесполезно для сообщества )
0 голосов
/ 07 марта 2019

Обычно вы выполняете простые проверки во внешнем интерфейсе и более сложные проверки во внутреннем интерфейсе

Например: проверить, если электронное письмо с регулярным выражением на переднем крае, отправить простое письмо, чтобы подтвердить существование этого письма

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...