Как веб-разработчик вы наверняка сталкивались с термином Полиморфный Javascriptили Универсальный Javascript, как некоторые предпочитают его называть. . Техника, стоящая за этим, даже упоминается как Будущее веб-приложений. Поэтому даже для PHP-сообщества трудно не наткнуться на какую-либо шумиху вокруг него.
В этой статье я объясню еще одно решение, которое очень легко интегрируется в любое PHP-приложение. Он называется Lambda и представляет собой популярный новый сервис AWS.

Если вы не знакомы с Lambda,это сервис бессерверных вычислений, куда вы можете загружать свой код в виде функций, а AWS обрабатывает все, что требуется в отношении масштабирования и доступности Это. Затем эти функции можно вызывать из любого веб-приложения или мобильного приложения.

В настоящее время у вас есть два основных варианта запуска любого Javascript в вашем PHP-приложении; вы можете установить расширение V8JS (которое встраивает движок V8 в ваше PHP-приложение) или позволить PHP и Node.js взаимодействовать друг с другом через протокол DNode RPC.

С добавлением Lambda мы можем загружать наш код Javascript в облако AWS и вызывать наш код через вызовы API. Давайте начнем с простого «Hello, World!» функция;

Нам нужно загрузить этот фрагмент кода в нашу учетную запись AWS. Том Брей написал об этом отличное руководство с тем же фрагментом кода.
Если вы закончили обучение и можете запустить код через консоль AWS, давайте попробуем вызывать тот же код через AWS PHP SDK;

Потрясающий! Как видите, мы получаем результат функции Lambda в виде полезной нагрузки в формате JSON. Пример очень простой, но, надеюсь, вы уже видели здесь множество применений Lambda. Чтобы перевести этот код на следующий шаг, мы попробуем отрендерить небольшое приложение React внутри простого приложения Silex.

Допустим, у нас есть компонент React, который просто отображает простую строку;

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

Как видите, он получает свойство name из объекта полезной нагрузки и отображает компонент в элементе #root.

Чтобы отобразить компонент в Lambda, нам нужно загрузить код компонента вместе со следующим обработчиком;

Вместо преобразования компонента в HTML-элемент мы передаем результирующую строку в функцию succeed callback функции Lambda.

Затем нам нужно вызвать функцию Lambda через очень простое PHP-приложение;

Когда посетитель переходит в корень нашего PHP-приложения, мы вызываем функцию Lambda и передаем ей полезную нагрузку в формате JSON. Результатом является строка разметки React, которую мы можем использовать для рендеринга серверной части компонента React. Также обратите внимание, что я также передал полезную нагрузку на сторону клиента.

Очень простой пример, но его можно легко распространить на гораздо более сложные приложения PHP/Javascript. Полный исходник примера — включая компилируемую часть с webpack — можно посмотреть здесь.

Originally published at robinvdvleuten.nl

Надеюсь, это помогло вам создать что-то потрясающее с помощью PHP, Javascript и Lambda. Выразите благодарность, нажав рекомендовать ниже, или поделитесь своими мыслями в комментариях.

Если вы работаете над чем-то похожим и у вас есть какие-либо вопросы, с которыми я мог бы помочь, напишите мне @robinvdvleuten в Твиттере!