BeanExplorer5
Это основная статья о 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.