我創建了一個模塊化的AJAX/PHP框架的PHP端,現在我想實現客戶端。唯一實例
我以前用模塊化的Web應用程序的經驗,我知道需要一個特定模塊的有時多個實例。例如,一個基於Web的雙人遊戲,每個用戶都有頁面部分。
在PHP方面我已經指定unque ID到模塊的每個構建的實例,我可以通過這個UID的瀏覽器,但我不知道如何實現這個模塊實例的JavaScript端。
模塊可以加載的所有一氣呵成或通過AJAX分別裝載(我使用jQuery)。
現在我使用的是模塊化的方法,我在一些文章中發現,但是我可以重新設計一些其他的方式,如果這將有助於解決這一問題,而sacrifising模塊化和私有/公共代碼分離。現在讓我們說我有一個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對象?