导出Javascript类函数

时间:2015-07-01 17:56:20

标签: javascript function export yslow

我正在尝试将模块YSlow实现到我自己的项目中。我想要使​​用的函数如下所示:

YSLOW.registerRuleset = function (ruleset) {
    YSLOW.controller.addRuleset(ruleset);
};

据我所知,YSlow在开头的代码中分配在这里:

if (typeof YSLOW === 'undefined') {
    YSLOW = {};
}

我希望能够导出此类并能够使用此功能。我通常只会说:

exports.sayHello = function() {
    return "Hello"
};

但是,当YSLOW开始时,我不确定如何正确地与registerRuleset()进行通信。如果我在yslow.js中放置sayHello(),我可以使用它,但对于任何使用YSLOW的函数,它都不起作用。我已经尝试在函数中将YSLOW之前和之后的导出放在一个函数中但是没有成功。

所以我的问题是,我该如何解决这个问题呢?就此而言,YSLOW.function()甚至做了什么,它的重要性是什么?

谢谢!

1 个答案:

答案 0 :(得分:0)

我不熟悉YSLOW,因此我不清楚您的查询。

如果您正在尝试检查是否加载了YSLOW类对象,则下面的代码可能有助于识别是否已加载。 此代码将继续轮询对象准备就绪并可用。这将轮询20毫秒(您可以增加到更多)。

它是一种黑客,您可以继续轮询对象,无论它是否已加载并可以使用。

   function checkLoaded() {
        if (YSLOW && YSLOW.controller && YSLOW.controller.addRuleset) {
            return true;
        }
        return false;
    }

    /* Start: polling to check if YSLOW Objects are ready */
    var timeout = Date.now() + 10000,
        startTime = Date.now();
    var intervalID = window.setInterval(function () {
        if (checkLoaded()) {
            console.log("GOT Ready at: ", Date.now() - startTime + "ms");
            window.clearInterval(intervalID);
            initLoad();//do your stuffs after loading here.
        } else if (Date.now() > timeout) {
            console.log("Not loaded, kill the polling.");
            window.clearInterval(intervalID);
            failedLoad(); //do your stuff for not loaded here
        }
    }, 20);