Рубрики
Без рубрики

Начало работы с RUSIONML и RUBYREACT

Быстрое введение в структуру причина проектов и прохождение простой разумной программы.

Автор оригинала: James Haver.

В этом руководстве мы будем проходить структуру причина проекта и взглянуть на пример примерного примера разумных действий, предоставленный 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 , используйте пряжа Добавить --dev Отказ

пряжа

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

Когда вы запустите пряжа , пряжа Добавить или пряжа удалить , пряжа. Блок обновляется. Иногда вы можете получить версию конфликтов или несколько версий одного Пакет сохранен на пряжа. Блок Отказ Обычно, если я внесу изменения в зависимости, я Удалить пряжа. Блок , бегите пряжа чистая Тогда пряжа убедитесь, что все Сценарии Работа в 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 (Приветствие): Разумность. Обновите также. Когда Показать правда, это оказывает приветствие. Когда это ложно, это ничего не оказывает.

Заключение

Я надеюсь, что это расщепляет ваш интерес к разуму и разумности. Достаточно помочь вам начать изучать официальную причину документов. В следующих руководствах я буду обсуждать причину и разум на большую глубину, и мы сделаем наш собственный проект.

Ресурсы