ReasonML позволяет писать простой, быстрый и качественный безопасный код с использованием экосистемы JavaScript и OCaml. Знаете ли вы, что 50% Facebook Messenger находится в ReasonML. Проверьте это, если вы еще не сделали этого!

ReasonReact предоставляет привязки React для работы с ReasonML. Я собрал файл Dockerfile для создания рабочего образа для веб-приложения ReasonReact, это помогает в развертывании веб-приложения ReasonReact, где настройка для bs-platform и настроен процесс обслуживания.

Этот Dockerfile предполагает, что ваша структура каталогов выглядит следующим образом:

├───Dockerfile
├─── app
     ├─── package.json
     └─── src/
  1. Используется образ node: 6, поскольку образ node: latest имел проблемы, связанные с глобальной установкой bs-платформы в глобальном масштабе. [1] [2]. Было несколько обходных путей, но node: 6 выполняет ту же работу без каких-либо проблем.
  2. bs-platform Bucklescript помогает в компиляции ReasonML в читаемый JavaScript. Он устанавливается глобально, поэтому уровень установки bs-platform кэшируется и не выполняется с нуля при каждой сборке докеров.
  3. Пакет serve также устанавливается глобально, который отвечает за обслуживание статического сайта.
  4. Затем мы добавляем package.json в контейнер и выполняем для него установку npm, которая установит все необходимые зависимости.
  5. Символическая ссылка на bs-платформу создается с помощью npm link bs-platform, которая создает символическую ссылку для сборки пряжи, которая работает должным образом.
  6. Исходный код из / src копируется в / app, который выбран в качестве рабочего каталога, и выполняется сборка пряжи для сборки приложения.
  7. В пакете serve index.html в / build обслуживается через порт 8080.

Проблемы, с которыми я столкнулся при реализации этого:

  1. Не работает с настройкой PWA сервис-воркера, потому что вам нужно установить заголовок без кеширования на /service-worker.js в соответствии с: https://github.com/facebookincubator/create-react-app/blob/ master / packages / response-scripts / template / README.md # offline-first-considerations
  2. Это пока не рендеринг на стороне сервера. Razzle - это инструмент, который абстрагирует всю конфигурацию рендеринга на стороне сервера, у него есть расширение, которое также работает с ReasonReact: https://github.com/jaredpalmer/razzle/tree/master/ примеры / причина-реакция . Скоро я буду внедрять SSR с ReasonReact.

В настоящее время я стажусь в Хасура. На платформе Hasura вы можете развернуть все, что можно докеризовать, с помощью всего лишь git push. Итак, я собрал краткое руководство по платформе Hasura для ReasonML.

Чтобы попробовать образец проекта ReasonML React на платформе Hasura (это бесплатно и займет у вас всего несколько минут)

  1. Установите инструмент Hasura CLI
  2. Запустите эту команду (вы можете скопировать всю команду ниже одним выстрелом)
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 без необходимости писать какой-либо внутренний код.

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