ReasonML позволяет писать простой, быстрый и качественный безопасный код с использованием экосистемы JavaScript и OCaml. Знаете ли вы, что 50% Facebook Messenger находится в ReasonML. Проверьте это, если вы еще не сделали этого!
ReasonReact предоставляет привязки React для работы с ReasonML. Я собрал файл Dockerfile для создания рабочего образа для веб-приложения ReasonReact, это помогает в развертывании веб-приложения ReasonReact, где настройка для bs-platform и настроен процесс обслуживания.
Этот Dockerfile предполагает, что ваша структура каталогов выглядит следующим образом:
├───Dockerfile
├─── app
├─── package.json
└─── src/
- Используется образ node: 6, поскольку образ node: latest имел проблемы, связанные с глобальной установкой bs-платформы в глобальном масштабе. [1] [2]. Было несколько обходных путей, но node: 6 выполняет ту же работу без каких-либо проблем.
- bs-platform Bucklescript помогает в компиляции ReasonML в читаемый JavaScript. Он устанавливается глобально, поэтому уровень установки bs-platform кэшируется и не выполняется с нуля при каждой сборке докеров.
- Пакет serve также устанавливается глобально, который отвечает за обслуживание статического сайта.
- Затем мы добавляем package.json в контейнер и выполняем для него установку npm, которая установит все необходимые зависимости.
- Символическая ссылка на bs-платформу создается с помощью npm link bs-platform, которая создает символическую ссылку для сборки пряжи, которая работает должным образом.
- Исходный код из / src копируется в / app, который выбран в качестве рабочего каталога, и выполняется сборка пряжи для сборки приложения.
- В пакете serve index.html в / build обслуживается через порт 8080.
Проблемы, с которыми я столкнулся при реализации этого:
- Не работает с настройкой PWA сервис-воркера, потому что вам нужно установить заголовок без кеширования на /service-worker.js в соответствии с: https://github.com/facebookincubator/create-react-app/blob/ master / packages / response-scripts / template / README.md # offline-first-considerations
- Это пока не рендеринг на стороне сервера. Razzle - это инструмент, который абстрагирует всю конфигурацию рендеринга на стороне сервера, у него есть расширение, которое также работает с ReasonReact: https://github.com/jaredpalmer/razzle/tree/master/ примеры / причина-реакция . Скоро я буду внедрять SSR с ReasonReact.
В настоящее время я стажусь в Хасура. На платформе Hasura вы можете развернуть все, что можно докеризовать, с помощью всего лишь git push. Итак, я собрал краткое руководство по платформе Hasura для ReasonML.
Чтобы попробовать образец проекта ReasonML React на платформе Hasura (это бесплатно и займет у вас всего несколько минут)
- Установите инструмент Hasura CLI
- Запустите эту команду (вы можете скопировать всю команду ниже одним выстрелом)
hasura quickstart anirudhm/hello-reasonml-react --type=hpdf &&
cd hello-reasonml-react &&
git add . && git commit -m "First commit" &&
git push hasura master &&
hasura microservice open www
Приведенная выше последовательность команд приведет к открытию окна вашего браузера с развернутым приложением ReasonML. Внесите изменения и git push для повторного развертывания!
Подробнее об этом кратком руководстве здесь: https://hasura.io/hub/project/anirudhm/hello-reasonml-react.
Я хотел бы услышать ваши отзывы об этом, дайте мне знать в комментариях ниже. :)
Hasura предоставляет вам мгновенные API-интерфейсы GraphQL для любой базы данных Postgres без необходимости писать какой-либо внутренний код.
Если вам понравился этот пост, рассмотрите возможность подписки на наш список рассылки, чтобы получать обновления всего контента, который мы публикуем.