В этом руководстве мы будем проходить структуру причина проекта и взглянуть на пример примерного примера разумных действий, предоставленный Facebook. Я объясню REACT CODE и вхожу в его более подробно в будущем учебное пособие.
Причина или RUSIONDML, является таковым синтаксисом, похожим на JavaScript для Ocaml со встроенной поддержкой JSX. Как правило, он используется в сочетании с компилятором BescleScript, который компилирует код OCAML 4.02 к читаемому JavaScript без в зависимости от отдельной системы выполнения. Разумность – отличный способ написать современные сайты. Причина также использует существующую экосистему JS и использует NPM/пряжу для создания программ.
Для остальной части учебника слово разум будет означать проект, который использует синтаксис разбиравности и компилятор BescleScript.
Скачать BescleScript и RUSYML
Я предпочитаю использовать пряжу, но все может быть сделано с NPM.
INIT Причина проекта при поддержке реактивных крюков.
yarn global add bs-platform bsb -init test-reason -theme react-hooks
Попробуйте запустить причина проекта в сервере разработки WebPack.
cd test-reason yarn PORT=12345 yarn server
В браузере перейти к localhost: 12345
Отказ Вы должны увидеть простое веб-приложение.
Понимание структуры разумного проекта
Вы должны увидеть следующие файлы в вашем каталоге RUSIOMML. Мы все подробно пройдемся.
- .gitignore.
- .Мерлин
- bsconfig.json.
- строить
- ликвидность
- node_modules.
- Package.json.
- README.md
- сортировка
- webpack.config.js.
- пряжа
Package.json.
Если вы сделали разработку ES6 ранее, этот файл должен быть вам знакомым. Это основной файл сборки по причинам проектов.
Имя
: имя проекта.Версия
: версия.Сценарии
: Различные команды вы можете выполнить, набравпряжа
Затем имя команды.Ключевые слова
: NPM Поиск по ключевым словам Если вы загружаете этот проект в качестве библиотеки в NPM.Автор
: имя автора.Лицензия
: Лицензия, которую вы выпустите этот проект, Список лицензий доступны Отказзависимости
: Библиотеки, которые ваш проект напрямую зависит (от NPM, локальной файловой системы или GitHub).DevDependonds
: Библиотеки, которые ваш проект зависит от создания и тестирования (от NPM, локальной файловой системы или GitHub).
Когда вы хотите добавить пакет в зависимости
, используйте пряжа Добавить
Отказ Когда вы хотите добавить пакет в DevDependonds
, используйте пряжа Добавить
Отказ
пряжа
Этот файл содержит список точных версий библиотеки, ее расположение, хеш содержимого и список его зависимостей. Вы не должны редактировать этот файл напрямую. Это создается пряжей и должна быть проверена в вашей системе вашу версию.
Когда вы запустите пряжа
, пряжа Добавить
или пряжа удалить
, пряжа. Блок
обновляется. Иногда вы можете получить версию конфликтов или несколько версий одного Пакет сохранен на пряжа. Блок
Отказ Обычно, если я внесу изменения в зависимости, я Удалить пряжа. Блок
, бегите пряжа чистая
Тогда пряжа
убедитесь, что все Сценарии
Работа в Package.json
Затем совершите новую пряжа. Блок
Отказ
bsconfig.json.
Этот файл также является файлом сборки, специфичным для BreckScript. Любые библиотеки это зависит ?| на должно быть в Package.json И любые библиотеки, которые вы звоните прямо в разум, должны
быть в bsconfig.json Отказ
Имя
: имя проекта. Как правило, должно быть таким же, как имя в Package.json.Причина
: В настоящее время единственный вариант –React-JSX
Отказ Установите это на3
Для поддержки реактивных крюков. Установите это на2
Только по причине классов.Источники
: Расположение кода причин.Пакет-спецификация
: опция для вывода Commonjs или ES6суффикс
: суффикс сгенерированных имен файлов.пространство имен
: Если True, затем используйте каталоги в рамках пространства имен, если False, только используйте только имя файла. Если это строка, то она обеспечивает пространство имен для всех файлов.BS-зависимости
: Причина зависимостей, используемых непосредственно в код причины.BS-зависимости - Dev
: Причина зависимостей, используемых для строительства или тестирования.refmt
: Версия причина синтаксиса используется:3
или2
Отказ
webpack.config.js.
Простая программа JavaScript, которая пакеты скомпилированного результата по причине. Это также предоставляет небольшой сервер развития.
Вот a Простое руководство по WebPack Отказ
сортировка
Где мы размещаем нашу причине код. Это можно изменить в Источники
в bsconfig.json
Отказ
node_modules.
Пакеты зависимости загружаются, когда пряжа
бежит Это не проверяется в версию.
ликвидность
Вывод из компиляции по причине.
строить
Вывод из запуска WebPack.
README.md
Документ с введением проекта. Я рекомендую добавить список изменений в нижней части с записью на версию или создавать отдельный файл журнала изменения.
.Мерлин
Файл, сгенерированный по причине, чтобы помочь IDes навигации к коду причин в проекте.
.gitignore.
Следующие файлы исключаются из версий.
- .Ds_store.
- .Мерлин
- .bsb.lock.block
- NPM-Debug.log
- /lib/bs/
- /node_modules/
Исследуя код причины в SRC
.р
Файлы – это причина файлов. .bs.js
файлы скомпилированы из причина к JavaScript, как указано суффикс
в bsconfig.js
Отказ
Index.re
Это основной файл, который загружается index.html
Отказ Это называет другой Два причина файлов в этом проекте.
ReactDOMRe.renderToElementWithId(, "index1"); ReactDOMRe.renderToElementWithId( , "index2");
Реантзор
это модуль, который исходит из пакета Разум-реагирование
Отказ RendertoElelementWithid
это функция, которая оказывает реактивный компонент на Дано HTML ID.
Если вы посмотрите в index.html
, вы можете увидеть два идентификатора, которые эти компоненты являются привязан к.
Component1.re
Компонент1
это компонент без гражданства. Если вы когда-либо использовали ES6, то Синтаксис должен быть вам знакомым. Он начинается с определения функции для обработки Кнопка нажмите.
let handleClick = (_event) => Js.log("clicked!");
Пусть
: Используется, когда мы хотим что-то определить.Handleclick
: имя значения/функции.= (_Event) =>
: Определите функцию, которая принимает один параметр. Размещая_
Перед именем параметра мы говорим компилятору, мы собираюсь игнорировать это.Js.log («нажал!»);
: print “нажал!” в консоль браузера.
Теперь мы определим компонент React React.
[@react.component] let make = (~message) =>{ReasonReact.string(message)};
[@ ract.component]
: Директива компилятора, нам нужна при определении реагирования. Компонент назван в честь файла.Пусть make = (~ сообщение) =>
: функция, которая ожидает, что причина компилятора компиляторов ожидает.~
означает, что мы проходим именованный параметр.: Это JSX. Это определяет div, который использует функцию HandleClick, которую мы определены выше.
{ReasyReact.String (сообщение)}
: Отображение параметра String Message в Div.;
: Закройте div и закончите функцию.
Component2.re
Компонент2 – это госта.
Определите тип записи (продукт), чтобы представлять состояние компонента. Состояние поддерживает значения: увеличение подсчета и значение, которое указывает, следует ли отображать сообщение.
type state = { count: int, show: bool, };
Определите тип enum (сумму) для представления доступных действий для компонента. Этот компонент поддерживает Нажмите
и Включить
Отказ
type action = | Click | Toggle;
Вот главная часть компонента. Также начинается с компонента React Директива компилятора и сделать
Отказ
[@react.component] let make = (~greeting) => { let (state, dispatch) = React.useReducer((state, action) => switch (action) { | Click => {...state, count: state.count + 1} | Toggle => {...state, show: ! state.show} }, {count: 0, show: true}); let message = "You've clicked this " ++ string_of_int(state.count) ++ " times(s)";{state.show ? ReasonReact.string(greeting) : ReasonReact.null}; };
Самая важная часть – Пусть (состояние, отправка)
Отказ React.useruger
это Функция, которая требует функции для определения Действие
поведение и начальный государственный. React.useruger
Возвращает значение Государство
и функция Отправка
Отказ
Функция прошла React.useruger
берет Два значения: состояние типа Государство
и действие типа Действие
Отказ Тогда это соответствует На все возможное Действие
S и возвращает новый Государство
Отказ
Когда Действие
это Нажмите
Это увеличивает значение Считать
одним. Когда Действие
это Включить
это изменяет Показать
государственный.
Наконец, React.useruger
берет начальное состояние, {count: 0, показать: true}
Отказ Это значения компонента при первом представлении.
После Государство
и Отправка
Определения, сообщение
определяется как «Вы нажали это» ++ string_of_int (state.count) ++ "раз (ы)";
Отказ Самая интересная часть в том, что State.count
использует Считать
Значение из Компонент Государство
Отказ Каждый раз State.count
изменения, сообщение
Получает Обновлено.
В корпусе JSX, начиная с Мы можем видеть использование
Отправка
функция. Когда <КНОПКА ONCLICK = {_ EVECT => Отправка (нажмите)}>
нажал, он излучает Нажмите
Действие и редуктовая логика запускается. Когда <КНОПКА ONCLICK = {_ EVECT => Отправка (переключатель)}>
нажал, он излучает Включить
действие для редуктора.
Последняя часть корпуса JSX использует State.show
Отказ Каждый раз Показать
обновляется, {State.show? Разумность .String (Приветствие): Разумность. Обновите
также. Когда Показать правда, это оказывает приветствие. Когда это ложно, это ничего не оказывает.
Заключение
Я надеюсь, что это расщепляет ваш интерес к разуму и разумности. Достаточно помочь вам начать изучать официальную причину документов. В следующих руководствах я буду обсуждать причину и разум на большую глубину, и мы сделаем наш собственный проект.