javascript 显示服务器上忽略的模块模式

javascript revealing module pattern ignored on server

我一直在寻找为什么我的 javascript 代码完全在我的虚拟主机上的答案。我有现有的 javascript 函数,这些函数在我尝试使用 javascript 中的显示模块模式修改它们之前一直运行良好,因为据我所知,这是减少污染全局命名空间的良好做法。这个范围之外没有函数调用,所以我没有使用 return 来指向函数。从 Visual Studio 测试时,它在不同的浏览器中工作正常。

godaddy 服务器中是否有我需要配置的东西?我试图打电话给他们寻求支持,但没有帮助。下面是我的代码示例。我实际上在这个范围内有更多的功能,但对这个问题保持简短。提前致谢。

myModule = (function () {

    //add upDate
    function timeOfUpdate {
    var timeOfUpdate = new Date(document.lastModified);
        $("#lastUpdate").append(timeOfUpdate);

    }
    //add some more functions
    function modTwo {
    //add code to execute..
    }
})();

我不确定你到底想用那个模块定义做什么,但你没有从模块返回任何东西,所以模块内的函数在模块内是本地的,不能使用从模块外部。如果您查看 this reference on the revealing module pattern,您会清楚地看到他们正在返回一个带有方法的对象,这就是分配给模块变量的内容。

也许你的意思是这样的:

var myModule = (function () {

    return {
        //add upDate
        timeOfUpdate: function {
            var timeOfUpdate = new Date(document.lastModified);
            $("#lastUpdate").append(timeOfUpdate);

        },
        //add some more functions
        modTwo: function {
            //add code to execute..
        }
    }
})();

这 returns 一个来自 IIFE 的对象,这样 myModule 就变成了一个对象,其中包含您的方法 timeOfUpdate()modTwo() 作为对象的属性。

然后,您可以访问您的函数:

myModule.timeOfUpdate();
myModule.modTow();

如果您不尝试从模块外部使用这些函数中的任何一个,那么您必须帮助我们提供有关您尝试执行的操作以及您看到的错误的更多详细信息。你可以在 IIFE 中包装一堆代码,就像你做得很好一样,这不会导致任何问题。如果你没有从那个 IIFE 返回任何东西,那么在 myModule = ... 中分配一个模块名称是零分,所以在我看来你至少在错误的方向上前进,但不理解你的意思正在尝试使用此模块或您遇到的错误 运行,我们真的帮不上什么忙。


此外,您的示例显示了一些局部函数定义,但没有显示调用任何函数,因此在您插入一些实际调用您的函数的代码之前不会发生任何事情。