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

据我所知,最好尽可能少地使用全局变量,因此一般建议似乎是将所有内容保存在一个全局变量中。因此,命名约定应如下所示:LibName.PROJECT_NAME,其中项目名称是您的单个全局变量的名称,该变量包含一个包含其他所有内容的模块。

我的目标是设计安全、不冲突的库。我使用这种设计模式是否正确?有没有人为 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 脚本,例如没有 DOM、没有命名空间冲突、没有浏览器兼容性问题等。

顺便说一句,我认为这种对象嵌套结构甚至不适用于 Apps 脚本库。

于 2012-11-27T11:28:15.650 回答