Я создал сторону PHP модульной среды AJAX / PHP и сейчас пытаюсь реализовать клиентскую сторону.
Из моего предыдущего опыта работы с модульными веб-приложениями я знаю, что иногда требуется несколько экземпляров одного конкретного модуля. Например, веб-игра для двух игроков с частями страниц для каждого пользователя.
На стороне PHP я назначил уникальный идентификатор каждому созданному экземпляру модуля, и я могу передать этот UID в браузер, но я понятия не имею, как реализовать сторону Javascript этого экземпляра модуля.
Модули могут быть загружены все сразу или загружены отдельно через AJAX (я использую jQuery).
Теперь я использую модульный подход, который я нашел в какой-то статье, но я могу изменить его другим способом, если это поможет решить эту проблему, не жертвуя модульностью и разделением частного / открытого кода. А теперь, скажем, у меня есть файл js со следующим:
//Self-Executing Anonymous Func
(function( MyModule, $, undefined ) {
// My Uid
MyModule.UID = "";
//Public Method
MyModule.onLoad = function() {
alert("Hey, you loaded an instance of MyModule with UID " + MyModule.UID);
};
//Private Methods follow
function somethingPrivate( ) {
}
}( window.MyModule = window.MyModule|| {}, jQuery ));
Я использую Smarty для шаблонов. Допустим, у меня есть простой шаблон модуля, подобный этому:
<div id="{$contents.moduleuid}">
here goes the contents of the module which can be accessed from MyModule Javascript code by using this unique moduleuid
</div>
Я настроил серверную часть, поэтому каждый модуль автоматически добавляет дополнительный шаблон с Javascript:
<script type="text/javascript">
/*
TODO: here I have access to the {$contents.moduleuid}
But I have no idea what to put here to create a unique instance of MyModule
(also it might need loading js file if it was not loaded yet) and I should also set for
this instance MyModule.UID to {$contents.moduleuid}
and also call MyModule.onLoad for this instance after it has loaded its Javascript.
*/
</script>
У меня нет опыта работы с продвинутыми темами Javascript, поэтому мне неясно, как я могу создать отдельный экземпляр MyModule для каждого модуля, который создается на стороне сервера? Можно ли вообще создавать экземпляры самозапускающихся анонимных функций? Если нет, то как я могу реализовать и клонировать объекты Javascript с отдельным частным / открытым кодом?