К содержанию
Medusa
Документация

Mount

Mount — модуль www/frontend/_shared/js/mount.js для инициализации mount-контейнера и привязки state-данных.

Подготовка mount-контейнера

Mount-контейнер должен быть заранее подготовлен в HTML-блоке с атрибутом [data-medusa-app-id="{id}"] в разметке документа, где {id} — идентификатор контейнера. Пример:

<div data-medusa-app-id="default"></div>

Инициализация mount-контейнера

Для инициализации нужно импортировать и вызвать модуль mount(id), где в аргументе id передаётся значение атрибута data-medusa-app-id HTML-блока mount-контейнера. Пример:

import {mount} from '@shared/js/mount';

const mountModule = mount('default');

Инициализация state mount-контейнера

Перед инициализацией state для HTML-блока mount-контейнера должен присутствовать атрибут [data-medusa-state-id="{id}"], где {id} — идентификатор HTML-блока с raw-данными состояния. Пример:

<div data-medusa-app-id="default" data-medusa-state-id="medusa-state-default-1"></div>

Затем импортируется модуль state и передаётся в метод mount(id).state(module) в качестве аргумента module. Пример:

import {state} from '@shared/js/state';

mountModule.state(state);

Монтирование в контейнер

Монтирование контейнера выполняется вызовом метода each(callback), где в аргументе callback передаётся функция с двумя аргументами:

  • node — DOM-элемент mount-контейнера;
  • props — объект JavaScript с данными из state-блока.

Пример монтирования Vue-компонента:

import {createApp} from 'vue';
import DefaultTheme from './DefaultTheme.vue';
import './style.css';

mountModule.each((node, props) => {
   createApp(DefaultTheme, props).mount(node);
});