Компонент ауры без какого-либо элемента DOM?
На странице " Начало работы" Aura.js (которая в данный момент недоступна, так что это ссылка на кеш Google) говорится следующее:
Другой способ запуска компонентов при запуске приложения - это явная передача списка в метод app.start. Пример:
`app.start([{ name: 'hello', options: { el: '#hello' } }]);`
Все перечисленные компоненты ДОЛЖНЫ иметь как минимум name и options.el, где name - имя запускаемого компонента, а options.el - селектор DOM, предназначенный для элемента DOM, который будет корнем вашего компонента.
Таким образом, кажется, что Aura требует, чтобы каждый модуль / компонент ДОЛЖЕН был иметь связанный элемент DOM. Это верно?
В моем приложении я хотел бы иметь несколько модулей, предназначенных исключительно для выполнения длинных фоновых вычислений, которые не должны быть связаны с каким-либо элементом DOM. Они передают свои вычисленные результаты в другие модули, которые имеют дело с отображением.
Мне нравится философия, лежащая в основе Aura.js (посредник / модули + MVC), но я не очень хочу ее взламывать. Любые идеи действительно будут оценены. Может я что-то неверно истолковал? Может быть, есть лучшая основа для меня?
Спасибо!
1 ответ
Компонент требует связанный элемент DOM, но он не требует, чтобы элемент DOM был виден на странице, просто доступен в DOM. Вы можете создать место для размещения ваших невидимых компонентов, например:
$("body").append('<div id="invisbleComponents" style="display:none"></div>');
Затем вы можете создать метод для запуска ваших компонентов и автоматически помещать их в ваш невидимый div:
var startComponent = function(c) {
$('<div data-aura-component="' + c + '" id="' + c + 'Options"></div>').appendTo("#invisibleComponents);
app.start([{ name: c, options: { el: '#' + c + 'Options' } }]);
};
Итак, чтобы запустить компонент под названием "myComponent", вы просто делаете вызов:
startComponent('myComponent');