BeanExplorer5 — различия между версиями
Asko (обсуждение | вклад) |
Asko (обсуждение | вклад) |
||
Строка 1: | Строка 1: | ||
<big>Это основная статья о BeanExplorer5.</big> | <big>Это основная статья о BeanExplorer5.</big> | ||
+ | |||
+ | Описание API [[BeanExplorer5 API|здесь]]. Поскольку эта основная статья недописана, остальная её часть статьи написана для тех, кто будет дорабатывать BeanExplorer5. | ||
+ | |||
+ | ==Концепции== | ||
+ | |||
+ | Основные технологии, которые мы используем - это Java, Java Servlet, OSGi, React, SystemJS, ES2015 через Babel. | ||
+ | |||
+ | ===Frontend=== | ||
+ | |||
+ | Основные frontend компоненты написаны на React, но могут быть написаны на чём угодно. Поскольку React - это лишь "V" из MVC, то часть функционала полноценного frontend framework было необходимо реализовать, и этот функционал находится в be5/be5-frontend/src/scripts/be5.js (или просто be5 - далее буду писать имена скриптов кратко). Это покрывает функционал routing, requests, frontend localization. Также полезный базовый функционал находится в be5/bus, be5/createStore, be5/createSimpleStore, be5/ext. | ||
+ | * bus - сообщения (брокер из паттерна pub/sub); например, bus.fire('DocumentChange', value), bus.listen('DocumentChange', value => ...); | ||
+ | * ext - расширения; | ||
+ | * createStore - создание store для управления данными на frontend; позволяет подписаться на его изменения; | ||
+ | * createSimpleStore - создание store, полным состоянием которого является результат GET запроса. | ||
+ | |||
+ | Необходимые части frontend подгружаются динамически с помощью SystemJS. | ||
+ | |||
+ | JSX+ES2015 скрипты компилируются с помощью Babel при сборке проекта. | ||
+ | |||
+ | Нерешённые проблемы: | ||
+ | * frontend подготовлен, но не переведён на [https://github.com/reactjs/react-redux redux], а это необходимо для упрощения работы с React компонентами (без redux или Flux бывает довольно нетривиально управлять состоянием React компонентов); | ||
+ | * be5.js требует разделения на небольшие части, также, как выделены bus и ext; | ||
+ | * невозможно отказаться от компиляции ES2015, даже если она будет поддерживаться всеми браузерами. SystemJS проверяет наличие ES2015 синтаксиса в скриптах, и в случае его наличия потается использовать транслятор в браузере, даже если явно указано, что транслятора нет | ||
+ | |||
+ | Tips на будущее: | ||
+ | * используйте [https://github.com/reactjs/react-redux redux], [https://facebook.github.io/react/docs/two-way-binding-helpers.html React two-way binding], [https://github.com/JedWatson/classnames React classNames]. | ||
==Сборка BeanExplorer5== | ==Сборка BeanExplorer5== |
Версия 17:10, 10 мая 2016
Это основная статья о BeanExplorer5.
Описание API здесь. Поскольку эта основная статья недописана, остальная её часть статьи написана для тех, кто будет дорабатывать BeanExplorer5.
Концепции
Основные технологии, которые мы используем - это Java, Java Servlet, OSGi, React, SystemJS, ES2015 через Babel.
Frontend
Основные frontend компоненты написаны на React, но могут быть написаны на чём угодно. Поскольку React - это лишь "V" из MVC, то часть функционала полноценного frontend framework было необходимо реализовать, и этот функционал находится в be5/be5-frontend/src/scripts/be5.js (или просто be5 - далее буду писать имена скриптов кратко). Это покрывает функционал routing, requests, frontend localization. Также полезный базовый функционал находится в be5/bus, be5/createStore, be5/createSimpleStore, be5/ext.
- bus - сообщения (брокер из паттерна pub/sub); например, bus.fire('DocumentChange', value), bus.listen('DocumentChange', value => ...);
- ext - расширения;
- createStore - создание store для управления данными на frontend; позволяет подписаться на его изменения;
- createSimpleStore - создание store, полным состоянием которого является результат GET запроса.
Необходимые части frontend подгружаются динамически с помощью SystemJS.
JSX+ES2015 скрипты компилируются с помощью Babel при сборке проекта.
Нерешённые проблемы:
- frontend подготовлен, но не переведён на redux, а это необходимо для упрощения работы с React компонентами (без redux или Flux бывает довольно нетривиально управлять состоянием React компонентов);
- be5.js требует разделения на небольшие части, также, как выделены bus и ext;
- невозможно отказаться от компиляции ES2015, даже если она будет поддерживаться всеми браузерами. SystemJS проверяет наличие ES2015 синтаксиса в скриптах, и в случае его наличия потается использовать транслятор в браузере, даже если явно указано, что транслятора нет
Tips на будущее:
- используйте redux, React two-way binding, React classNames.