我一直在努力想出一段時間寫GAS庫的最佳方式,但我有一個哈特時間計算出來。我讀道格拉斯克羅克福德的 - Javascript:好的部分,我試圖在GAS中實施這些課程。每個導入的庫都將全局變量添加到您的項目中(ScriptModule類型的),因此the modular design pattern似乎是一個很好的開始。從我掛這樣的模式的文章借用可能是這樣的:GAS圖書館的設計模式?
var MODULE = (function() {
var my = {},
privateVariable = 1;
function privateMethod() {
// ...
}
my.moduleProperty = 1;
my.moduleMethod = function() {
// ...
};
return my;
}());
該模塊然後可以這樣調用:
var module = LibName.MODULE;
var property = module.moduleProperty; // 1
var method = module.moduleMethod; // ...
從我所收集最好是儘可能少的全局變量儘可能,所以一般的建議似乎是將所有東西都保存在一個全局變量中。因此,命名約定應該看起來像這樣:LibName.PROJECT_NAME,其中項目名稱是您的單個全局變量的名稱,該全局變量包含其他所有模塊。
我的目標是設計安全,無衝突的庫。我有權利使用這種設計模式嗎?有沒有人爲GAS庫開發了自己強大的設計模式呢?
我認爲你對衝突是正確的,圖書館的名字也是保存一切的名字空間。 –
(抱歉超過了5分鐘的編輯限制)我測試了模塊化模式,並按預期工作。在這種設計模式中,您將擁有一個只有對象本身才能訪問的私有變量和私有方法的對象。 有更好的方法來處理應用程序腳本中的對象嗎? –
我不認爲有。但是,庫腳本中的AFAIK變量/屬性對導入它的腳本永遠不可見。爲了隱藏方法,你可以附加一個下劃線「_」。再說一遍,我不認爲將對象嵌套整個腳本只是將它用作庫是有任何好處的。 –