Класс является родителем для главного модуля (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
|
- 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);
}