Эта статья содержит пошаговые инструкции по созданию приложения Reactcreate-react-app) и добавления в него компонента Elmreact-elm-components), включая необходимый Webpack конфигурация. Если вы застряли, вы можете взглянуть на репо, которое я создал для проверки этого поста.

Есть много статей о том, почему нужно вводить Elm в проект React, и некоторые о различных технических аспектах, но ни одна из них не описывает базовые пошаговые инструкции. Эта статья призвана восполнить этот пробел и предоставить вам платформу для опробования более сложных вещей. Он использует популярные react-elm-components, но также стоит обратить внимание на elm-react-component, который более самоуверен и проще для обычных настроек.

Установить преквесты

Вам нужно будет установить следующие

Создать приложение React

Откройте окно консоли, создайте каталог для приложения, перейдите к нему и создайте приложение для реагирования.

create-react-app .

Затем убедитесь, что он работает.

npm start

Это должно открыть браузер, показывающий вам приложение create-response-app по умолчанию.

См. Коммит run create-response-app в сопутствующем репозитории ».

Установите react-elm-components

React-elm-components - это компонент React, который добавляет некоторое удобство взаимодействию React / Elm. Это позволяет точно контролировать

Откройте другое окно консоли в том же каталоге.

npm install react-elm-components

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

См. Коммит « установить react-elm-components в сопутствующем репозитории».

Импортировать react-elm-components

Добавьте import Elm from 'react-elm-components' в App.js.

См. Коммит « import react-elm-components в сопутствующем репозитории».

Добавить компонент Elm

Создайте src / elm / Buttons.elm, скопировав файл из сопутствующего репозитория. Этот файл является классическим примером Buttons из Документации Elm Arhitecture.

Добавить import Elm from 'react-elm-components' в App.js

Добавить import { Buttons } from './elm/Buttons' в App.js

На этом этапе приложение перестает работать. Это связано с тем, что Webpack не настроен для компиляции Elm, поэтому давайте исправим это.

См. Коммит « Добавить классический пример Elm Buttons и сослаться на него в сопутствующем репозитории».

Установите Elm в проект

elm-package - это менеджер пакетов Elm, который будет включен при установке Elm.

elm-package install

Добавить /elm-stuff в .gitignore

См. Коммит Install Elm Language в сопутствующем репозитории ».

Установить elm-webpack-loader

Webpack может использовать elm-webpack-loader для компиляции кода Elm в javascript.

npm install elm-webpack-loader --save-dev

См. Коммит Установить elm-webpack-loader в сопутствующем репозитории ».

Отредактируйте конфигурацию Webpack

Приложение Create-react-app не поддерживает Elm, поэтому нам нужно изменить конфигурацию Webpack. На этом этапе технически правильным является eject из приложения create-react-app. Однако, чтобы упростить понимание этого поста, мы собираемся аккуратно отредактировать конфигурацию внутри приложения create-react-app. Эти изменения будут потеряны при следующем обновлении приложения create-react-app.

Внесите следующие изменения в node_modules \ response-scripts \ config \ webpack.config.dev.js

Сообщите webpack разрешить файлы .elm

extensions: ['.js', '.json', '.jsx', '.elm'], // add .elm to the list of extensions to resolve

Попросите загрузчик файлов игнорировать файлы .elm

{
	exclude: [
	  /\.html$/,
	  /\.(js|jsx)$/,
	  /\.css$/,
	  /\.json$/,
	  /\.bmp$/,
	  /\.gif$/,
	  /\.jpe?g$/,
	  /\.png$/,
	  /\.elm$/, // Ask the file loader to ignore .elm files
	],
	loader: require.resolve('file-loader'),
	options: {
	  name: 'static/media/[name].[hash:8].[ext]',
	},
},

Зарегистрируйте elm-webpack-loader для обработки файлов .elm

// loader for elm files
{
	test: /\.elm$/,
	exclude: [/elm-stuff/, /node_modules/],
	loader: require.resolve('elm-webpack-loader')
},

Мы также хотим зафиксировать изменения в этом файле, который Git в настоящее время игнорирует, поэтому добавьте его в .gitignore.

*
!*/
!/node_modules/react-scripts/config/webpack.config.dev.js

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

См. Коммит « Непослушное редактирование конфигурации webpack в репозитории компаньонов».

Компонент Display Elm Buttons

Добавьте <Elm src={Buttons} /> в App.js непосредственно перед финальным </div>.

Теперь приложение должно обновиться, чтобы отобразить компонент Buttons Elm.

См. Коммит Компонент Display Elm Buttons в сопутствующем репозитории ».

Заключение

Заставить Elm работать в React очень легко, если вы знаете, как это сделать.

Теперь, когда у вас работает базовое приложение, вы сможете следить за некоторыми из этих отличных статей, чтобы продолжить взаимодействие React / Elm.