与Firebug / Chrome控制台中的require.js模块交互?

时间:2011-12-10 17:47:11

标签: javascript firebug google-chrome-devtools requirejs

我刚开始使用require.js。我已经成功地包装了jquery,一些插件和一些我自己的模块。我正在尝试与Firebug(或Google Chrome的JS控制台)中的模块(或jquery)进行交互,但我运气不佳。

从控制台访问这些模块的正确方法是什么?

2 个答案:

答案 0 :(得分:54)

假设我们有模块/app/scripts/methodsModule.js,它们返回一些方法:

define({
    someMethod: function() {
        // do stuff
    },
    anotherMethod: function() {
        // do some more stuff
    }
});

在我们的数据主文件/app/scripts/main.js中,我们有:

require(['methodsModule'], function(methods) {
    methods.someMethod() // call someMethod
    methods.anotherMethod() // call anotherMethod
})

一旦requireJS加载我们的data-main,我们就可以从javascript控制台命令行访问任何已经由requireJS加载的模块,如下所示:

>> methods = require('methodsModule'); // requireJS has module methodsModule stored
>> methods.someMethod() // call someMethod
>> methods.anotherMethod() // call anotherMethod

如果一个模块没有通过调用require()或define()加载,我们必须传递自己的回调函数才能在模块加载后调用require函数:

>> myCB = function(methods) { methods.someMethod() }
>> require(['methodsModule'], myCB)

否则,requireJS会抛出一个错误,说明模块尚未加载..

答案 1 :(得分:14)

有一种方法可以不使用回调。

如果之前在控制台或您的应用程序中不需要模块,您可以先要求它:

require(['methodsModule']);

之后,您可以使用“动态”要求访问它:

require('methodsModule').someMethod();