【问题标题】:Interacting with require.js modules from the Firebug/Chrome console?从 Firebug/Chrome 控制台与 require.js 模块交互?
【发布时间】:2012-01-17 12:24:29
【问题描述】:

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

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

【问题讨论】:

    标签: javascript firebug google-chrome-devtools requirejs


    【解决方案1】:

    假设我们有返回一些方法的模块 /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 会抛出一个错误,说模块还没有被加载..

    【讨论】:

    • 这是否适用于 requireJS“优化”脚本?也许我在这里做错了什么,但它似乎对我不起作用。
    • 自 2015 年 5 月 20 日起仍然有效。在将“原始”项目转换为 AMD 时,我需要确保一切正常。但是,在定义执行后,我无法找到返回的模块对象的去向。很好的解释。
    【解决方案2】:

    有一种方法不使用回调。

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

    require(['methodsModule']);
    

    之后你可以使用“动态”require来访问它:

    require('methodsModule').someMethod();
    

    【讨论】:

    • 这比我尝试的要容易得多,+0.1E1。我更喜欢将模块加载到窗口以便于访问。 require([m='lib/imagesloaded']); imagesLoaded=require(m);
    猜你喜欢
    • 1970-01-01
    • 2011-10-26
    • 2015-01-20
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 2015-11-01
    • 2019-07-21
    • 2010-11-06
    相关资源
    最近更新 更多