2

私はしばらくの間、GAS ライブラリを作成する最良の方法を見つけようとしてきましたが、それを理解するのに苦労しています。Douglas Crockford の - Javascript: The good parts を読み、これらの教訓を GAS に実装しようとしています。インポートされたすべてのライブラリは、(ScriptModule タイプの) プロジェクトにグローバル変数を追加するため、モジュール設計パターンは開始するのに適した場所のように思えます。このようなパターンにリンクした記事を借りると、次のようになります。

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; // ...

私が収集したものから、グローバル変数はできるだけ少なくするのが最善であるため、一般的なアドバイスは、すべてを 1 つのグローバル変数に保存することです。したがって、命名規則は次のようになります。

ここでの私の目標は、安全で競合のないライブラリを設計することです。このデザインパターンを使用するのは正しいですか? GAS ライブラリ用の独自の堅牢な設計パターンを開発した人はいますか?

4

1 に答える 1

3

スクリプトをライブラリとして GAS にインポートすると、新しい「名前空間」が既に作成されているため、自分で別の名前空間を作成する必要はありません。あなたがしたように、あなたはそれを「尊重」しなければならないでしょう:

//there's no purpose for this
var module = LibName.MODULE;
var method = module.method;

//comparing if you write code directly on the library
var method1 = LibName.method1;

GAS はクライアント側の JavaScript ではありません。学んだことのほとんどは Apps Script には当てはまりません。たとえば、DOM がない、名前空間の競合がない、ブラウザの互換性の問題がないなどです。

ちなみに、このオブジェクトのネスト構造は、Apps Script ライブラリでも機能しないと思います。

于 2012-11-27T11:28:15.650 に答える