Автор оригинала: Chris Wahlfeldt.
Что такое гиперпп?
HyperApp описан как функциональная альтернатива, чтобы реагировать, что очень мало в размерах. Это принимает идеи из Elm и Реагировать Так что, если вы знакомы с этими библиотеками, чем HyperApp будет легче понять. Библиотека весит на Wopping 1KB, который придает скорости вашего приложения и читаемости его кода. Код составляет около 300 строк длиной и легко прочитано и понятно в течение короткого времени. В этой статье я собираюсь показать вам, как начать использовать HyperApp, используя Bundler Asset, называемый parcel.js. Давайте погрузиться в!
Некоторые настройки
Начнем с использованием NPM, чтобы построить инфраструктуру для приложения.
mkdir hyperapp-start && cd hyperapp-start
Далее мы будем NPM init
в то время как внутри /hyperapp-start
Отказ Оттуда мы можем установить некоторые наши зависимости. Parcel.js – очень простой модуль Bundler, который позволяет вам использовать ES6/SASS/Postcsss … и т. Д., Без особой конфигурации, если таковые имеются.
npm i hyperapp && npm i -D parcel
Давайте также создадим небольшую структуру для нашего приложения HyperApp (или это просто «гиперпп» отсюда отсюда …?). Мне нравится использовать следующую структуру:
src/ index.html index.js package.json readme.md
Посылка требует точки входа, поэтому я использую index.html
с скриптом, указывающим на index.js
Hyperapp & Parcel sitting in a tree
Это позволяет посылку сделать свою магию и создать статический индекс для распространения.
Благодаря посылке, установленной в вашем проекте, вы можете использовать CLI Parcel в вашем Package.json Scripts.
"start": "parcel ./src/index.html --out-dir ./dist"
Это запустит сервер Parcels и выводит каталог в корне в корне вашего проекта в ./dist.
Вы также можете построить проект, используя следующий скрипт.
"start": "parcel build ./src/index.html --out-dir ./dist"
HyperApp … наконец!
С какой-то структурой из пути и нашей системы сборки на месте давайте выкопать HyperApp.
Вот пример приложения, созданного с помощью HyperApp. Этот код должен существовать в index.js
Отказ
import { h, app } from 'hyperapp'; const state = { count: 0, }; const actions = { down: value => state => { return {count: state.count - value}; }, up: value => state => { return {count: state.count + value}; }, }; const view = (state, actions) => (); const main = app(state, actions, view, document.body);{state.count}
Запустите сервер Parcel Dev с помощью NPM начать
и откройте свой браузер к http://localhost: 1234
чтобы увидеть приложение, работающую.
Некоторые из этого должны выглядеть знакомы, если вы исходите из React или Elm. Давайте начнем с вершины и работать вниз.
Во-первых, Импорт {h, приложение} из 'hyperApp';
Отказ Это 2 функции, которые составляют гиперпп. H
Создает ваш виртуальный дом и приложение
галстуки Государство
, Действия
и Вид
Вместе, чтобы создать приложение и позволить обновлениям в изменении состояния.
Далее, давайте поговорим о Государство
и Действия
приложения.
const state = { count: 0, }; const actions = { down: (value) => (state) => { return {count: state.count - value}; }, up: (value) => (state) => { return {count: state.count + value}; }, };
Государство
это объект, который содержит состояние всего приложения. Действия
Есть еще один объект, который содержит все действия для вашего приложения. Действия позволяют обновить состояние. Вы не можете обновить состояние без действия. При обновлении состояния с действием вы являетесь эффективным, создавая новый объект состояния без мутирования исходного объекта состояния.
Это придает к тому, что ваш код чистые и менее ошибка, поскольку все будет происходить из одного источника, действие. Это очень похоже на redux минус всей котельной, который вам нужно, чтобы получить его в реакции. С HyperApp вы получаете это по умолчанию.
Давайте посмотрим на одно из действий.
down: (value) => (state) => { return {count: state.count - value}; }
вниз
это Функция Curred Это позволяет больше модульности и неизменности. Скажи, что звонишь вниз (1)
с вашего вида; ценность 1
будет передаваться, а затем передан другую функцию, которая содержит состояние. Оттуда функция возвращает объект, который представляет часть состояния, которую вы хотите обновить. Это, в свою очередь, создает новый объект состояния с новым значением и запускает RedRaw DOM и обновляет вид.
Переезд на вид. Вы можете написать это в jsx или простой H
Функция звонков. Мне нравится JSX, так что я решил написать мой взгляд.
const view = (state, actions) => ();{state.count}
Вид передается как действия, так и состояние, чтобы затем диспергированы по всему приложению. Затем представление оказывается как Виртуальный Дом Отказ
Последнее, но не менее важное, приложение должно быть установлено на DOM, используя приложение
функция.
const main = app(state, actions, view, document.body);
приложение
берет Государство
, Действия
и Виды
и прикрепляет его к последнему аргументу, который может быть любым действительным узлом DOM, который существует в вашем index.html
Отказ
Что дальше?
Теперь вы должны быть оснащены для продолжения обучения и работы с Hyper App. Я настоятельно рекомендую читать Hyper App’s Код и Readme Отказ
Я действительно думаю, что меньше больше, когда дело доходит до опыта разработчика, и HyperApp – это яркий пример этой философии.