BeanExplorer5 — различия между версиями

Материал из DevelopmenOnTheEdge
Перейти к: навигация, поиск
Строка 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 на будущее:

Сборка BeanExplorer5

См. Сборка BeanExplorer5 проекта.