Module: RootModule

Класс является родителем для главного модуля (Root Module).
Наследуется от класса Observable для реализации паттерна Наблюдатель (Observer).
Объект Root модуля реализует паттерн Посредник (Mediator).

Parameters:
Name Type Description
config Object

конфиг приложения (пример конфига в README.md)

Source:
Example
import Onedeck from 'onedeck';

export default class Root extends Onedeck.RootModule { ... }

Methods

$$rout(routData)

В каждом модуле содержиться метод $$rout.
Метод необходим для реализации маршрутизации, так же может передавать данные.

Parameters:
Name Type Description
routData Object

Объек содержит url и state.

Properties
Name Type Description
path string

url, first element module name.

state Object

state passed from the module.

Source:
Examples

Создания события для роутинга

this.$$on('onRout', (data) => this.$$rout({
    path: `/module_name/item/${data.id}`,
    state: data
 })

Переход на другую страницу

import Module from 'ModuleName/module.js'
const module = new Module()

module.$$rout({
    path: '/module_name/item/1',
    state: {
        id: 1,
        name: 'Example',
        ...
    },
 })

(abstract) dispatcher(path, state)

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

  • dispatcher Root модуля
  • dispatcher всех Global модулей в произвольном порядке
  • dispatcher Layout модуля
  • dispatcher Page модуля
  • dispatcher Embed модулей в произвольном порядке
Parameters:
Name Type Description
path string

массив с элементами url адреса.

state Object

данные переданные с url.

Source:
Example
dispatcher (path, state) {
  console.log('dispatcher', this.constructor.name, path, state);
  // Если путь my.site.com/moduleName/item/3
  if (path[1] === 'item') this.showItem(state, path[2]);
}

(abstract) eventHandler()

Абстрактный метод. Обработчик событий.
В этом методе должны быть описаны все события уровня приложения, которые будут доступны в каждом модуле.

Source:
Example
eventHandler () {
 // Обработка ошибок http запросов
 axios.interceptors.response.use(undefined, (error) => {
    this.ajaxError(error.response.data);
    return Promise.reject(error);
 });

 // Событие открывает окно
 this.$$on('showGlobalWnd', () => {
   const wnd = new ExampleGlobalWnd();
   wnd.show();
 });

 // Событие показывает уведомление
 this.$$on('notify', (text) => {
   const notifyObj = new ExampleNotification();
   notifyObj.notify(text);
 });
}

(abstract) init(path)

Абстрактный метод. Инициализация приложения.
В этом методе должна быть описана инициализация приложения.
Метод вызывается 1 раз при инициализации всего приложения.

Parameters:
Name Type Description
path Array

массив с элементами url адреса.

Source:
Example
init (path) {
  console.log('init', this.constructor.name, path);

  // Вызываем обработчик событий
  this.eventHandler();
}

(abstract) mounted(currentModule, currentLayout)

Абстрактный метод. Монитирование модуля.
Метод автоматически вызывается для каждого модуля при изменении url адреса.
В методе доступны объекты currentModule и currentLayout.
Вызывается в следующем порядке:

  • mounted Root модуля
  • mounted всех Global модулей в произвольном порядке
  • mounted Layout модуля
  • mounted Page модуля
  • mounted Embed модулей в произвольном порядке
Parameters:
Name Type Description
currentModule Object

текущий Page модуль.

currentLayout Object

текущий Layout модуль.

Source:
Example
mounted (module, layout) {
  console.log('mounted', this.constructor.name, module, layout);
}