报告工具中的 requireJS - 需要了解标准行为

requireJS in a reporting tool - need to understand standard behavior

我必须使用一个报告工具 (IBM Cognos analytics),它提供了在由该报告工具创建的 HTML 报告中插入自定义脚本的能力。因此,我们应该能够引用 jQuery、jQueryUI 等 JS 库,并使用它们等。 报告工具中的这个功能是官方的,据说他们正在使用 requirejs 来处理这个问题。 在这种情况下我们需要遵守的代码模型(来自 IBM "api")如下:

define(['https://our_site/someFolder/someResource.js'], function() {

    /*
    A) - Here, I would expected that any code writtne here is executed only when "someResource.js" has been loaded
   */

function monModule() { };

monModule.prototype.setData= function() { 
    /*
            B) - some code here
            */
};      

monModule.prototype.draw= function(o) { 
    /*
            C) -  some code here
            */
};

return myObject;});

我的问题如下:

1) 我目前对 "define" 块内行为的理解是,只有在 "define" 指令中提到的资源是 loaded/available 时,才会执行 JS 代码。这是正确的吗? 在上面的示例中,A) 或 C) 中提到的部分将 "evaluated" / 仅在加载资源 "someResource.js" 时执行。我理解正确吗?

2) IBM Cognos 分析使用的 RequireJs 库显示如下:

/** vim: et:ts=4:sw=4:sts=4 * @license RequireJS 2.1.14 版权所有 (c) 2010-2014,Dojo 基金会保留所有权利。 * 可通过 MIT 或新的 BSD 许可证获得。 * 详见:http://github.com/jrburke/requirejs */

那么我可以假设 IBM Cognos 分析使用的 RequireJS 库是 "common" / "standard" 而不是派生的,因此 RequireJS 的所有功能和行为都应该在IBM Cognos 分析?

我问这一切是因为我们面临着一些 JS 代码似乎在资源加载之前执行的问题;我们收到类似““$”不存在 ..etc..”的错误。

欢迎任何帮助/建议。 谢谢!

1). define()的回调只执行一次,在你的例子中定义你的module.So,只会执行A),而B)和C)是[=11的原型中方法的代码=]

以下是执行 define() 函数时 RequireJS 在后台执行的步骤:

  1. 它加载异步模块的依赖项
  2. 加载依赖项时,它会执行回调,将加载的依赖项作为参数注入。回调应该returns一个定义模块的值。
  3. 它内部存储返回值,因此当其他模块需要刚刚定义的模块时,它将作为参数注入。

2) 您可以计算该文件的 md5 校验和并根据 "official" RequireJS 库

对其进行验证

关于您遇到的错误。也许您需要设置 shim 以确保 jQuery 在需要 jQuery?

的模块之前加载