Артур Эшенбренер. Мегаплан. Использование типизации при разработке SPA приложения на PHP + React

Автор Denis Lisitsin
Артур Эшенбренер. Мегаплан. Использование типизации при разработке SPA приложения на PHP + React

Меня зовут.

Артур и сегодня буду рассказывать про строгую типизацию при разработке на. Фрунзе в том числе связки с бейном вкратце расскажу про компанию которая работает в компании. Мегаплан она.

Это продукт который позволяет малому бизнесу больше продавать сделать больше проектов у нас 5000 клиентов 100 серверов а500сп данных пользователь 210 модели предметной области в городе и очень много кода который был написан в 2007 году.

То есть компании. Уже 200 лет и большой достаточно Legacy и вот как — это примерно было, а у нас было было одно ядро которым была закрыта вся бизнес-логика. И в тоже время там же. Был рендеринг страниц классической в приложении с сервером рендерингом и с каким-то кастомным золотом которая добавляла анимацию минимальный какие-то есть вопросы без какой-либо систематизации и прочего обособленно было идти мобильного приложения ну и соответственно к этому обращалась попрощались разные мобильное приложение которое написали под iPhone под под Android даже под Windows Phone и также отдельно было интеграцией соответственно для операции документацию проблема такое схема она в том, что при разработке любовь свечи нам приходилось делать изменения в трёх местах система на самом деле даже 4 — это в основном ядре нужно было заменить отдельно API для мобильного приложения отдельные элементы цепи для. Инстаграм ещё там возможно отдельно там что-то в джаваскрипте дописати какие-то экшены в ядре. Дописать специально для запросов которые отправляют sgs понятно то, что — это в какой-то момент стало очень сложно поддерживать и Market вещества очень большой потому что. Разработка и так далее. Всё выливалась очень долго с кем мы решили поменять. Нам очень повезло, что примерно 2 лет назад в компании принято решение сделать графический дизайн под — это дело так как мы понимали, что нужно будет написать практически полностью. Франсуа Мы решили взять модные современные технологии мы взяли мы взяли react и решили написать Single page applications под — это дело соответственно новому приложение, но и мы решили написать ещё одну версию API — это конечно поменять немножко картинку про гонку стандарты когда их много и мы решили сделать ещё один их стало еще больше вот, а ты не менее. Мы решили сделать единая пить для всего в том числе для интеграции для мобильного для всех мобильных приложений и для пользовательского интерфейса как — это стало нас осталось ядром и его не трогали рядышком есть API Gateway который проксировать запросы гидро по сути и дальше с этим API уже работают все остальные компоненты системы документации генерируется — это сингл. Пейдж апликейшн работает интеграция. Что такое если с. Богданом всё более-менее понятно то братья писать просто на реакцию показалось немножко неправильно немножко будет — это сложно когда когда станет больше и мы немножко подход к описанию на букинге тоже хотелось бы рассказать о. Значит все действия вопи выражаются через функцию сущность — это всё всё у нас сущность у нас находят приходят сущности на выход продаются сущности atapi и мы используем декларативное описание то есть. Вот пример типичной функция которая даёт нам список задач на вход она принимает запрос на поиск на выход она даёт массив задач и сверху аннотации который говорит о том, что — это она работает по запросу таком-то импланту дальше формально описывается вот этот класс Task Search request который описывает параметры которые приходят папе видно, что там принимаются параметры который может быть строкой и формально описывается выход этой функции. То есть — это массив задач дефекатор название и соответственно текст пример немножко синтетические скорее больше для доклада как заработать на клиенте. Она обычно запросу делаются как-то так да то есть мы шлём get-запрос значит он помнит у нас забить в строке параметры через планшет с объект. Что здесь может пойти не так на самом деле очень много всего может пойти не так например мы не можем знать на клиенте наверняка. Что такое. Поинт У нас есть понятно. Когда у нас один всегда можем посмотреть документацию убедиться в этом когда у нас их много мы можем ошибиться и много где — это первое, что здесь может пойти не так потом мы можем ошибиться в методе компоненты можно делать Get Post запрос длится так далее мы не можем быть уверена, что какое-то конкретное Point может какой-то конкретный метод и ещё. Мы даже не уверена, что в этот этот эндпоинт принимает параметр к. Вере И в тоже время — уверен, что он принимает его как строку потому, что запрос может быть сложным с основным объектом и так далее и проблемы такой можно написать написать много тестов. А ещё она в этом может скрипт в решении этой проблемы вот описание нашего бренда на. ТВ3 все здесь. Видно, что они имеют Method Get A можно выполнить запрос на определенный файл с определенными параметрами всё четко описано то есть мы видим, что парень должен быть строкой и возвращает он Promise от массива задач. А как с этим удобно работать да ещё описывается сама интерфейс задачу соответственно то есть видно, что если снять в котором названия и текст. Вот пример как с этим работать. Даже при наборе текста при наборе наборе кода мы уже видим, что идёшь к нам подсказывает, что request.get принимает параметр и туда приходит строка API Task не просто какая-то абстрактная строка. Вполне себе конкретно здесь перечень таких строк он будет, а при попытке сделать такой запрос и движка на втором подскажет, что мы забыли передать недостающие параметры в данном случае нужно передать в параметр запроса на поиск пытаемся ты сделать видно, что мы забыли указать сам параметр каре.

0 комментариев
0

Читайте также