Как инкапсулировать JavaScript в компоненте языка на стороне сервера? - PullRequest
0 голосов
/ 05 сентября 2011

Существует ли какой-либо шаблон проектирования или что-то, что я могу использовать для создания автономных компонентов, которые включают в себя некоторые функции, включая добавление тегов сценария в окончательный вывод html?

Например, один компонент, который я создал с некоторой степенью успеха, - это пакет Modal_Window, который я могу использовать следующим образом:

$mw = new Modal_Window($template); // $template is the object in charge of rendering the html template
$mw->setContent('Click here')->setBoxContent('<img src... />');
echo $mw;

Внутренне, Modal_Window позаботится о том, чтобы указать объекту шаблона добавить необходимые библиотеки js.

Ну, это своего рода идея. Что я хочу знать, так это если это способ справиться с этим, или есть более стандартный способ (или я вообще не должен это инкапсулировать). Есть ли известный шаблон для этого? Можно ли создать такого рода компонент более разобщенным, чтобы я мог поделиться им? Потому что он полностью зависит от объекта шаблона и способа проверки того, что библиотеки js добавляются не более одного раза (предположим, у меня есть 2 компонента: Modal_Window и Accordion, и оба требуют jquery, и я не хочу, чтобы это было добавлено дважды)

1 Ответ

1 голос
/ 05 сентября 2011

Я бы предложил вам иметь центральный менеджер модулей (обычно это называется вашим приложением или вашей структурой).

Затем модуль регистрируется в диспетчере модулей и сообщает менеджеру модулей, что у него есть активы x, y.и z, которые должны быть включены соответствующим образом при использовании этого модуля.

Любая дополнительная информация о том, как эти активы обрабатываются, хранятся, отображаются или обычно обрабатываются, зависит от платформы / приложения.

Но для включения JavaScript я бы сказал, что модуль просто устанавливает зависимости JavaScript отменеджер модулей.Тогда менеджер модулей, вероятно, обеспечит соблюдение зависимостей, и зависимости будут включены только один раз.

...