报告工具中的 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 在后台执行的步骤:
- 它加载异步模块的依赖项
- 加载依赖项时,它会执行回调,将加载的依赖项作为参数注入。回调应该returns一个定义模块的值。
- 它内部存储返回值,因此当其他模块需要刚刚定义的模块时,它将作为参数注入。
2) 您可以计算该文件的 md5 校验和并根据 "official" RequireJS 库
对其进行验证
关于您遇到的错误。也许您需要设置 shim 以确保 jQuery 在需要 jQuery?
的模块之前加载
我必须使用一个报告工具 (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 在后台执行的步骤:
- 它加载异步模块的依赖项
- 加载依赖项时,它会执行回调,将加载的依赖项作为参数注入。回调应该returns一个定义模块的值。
- 它内部存储返回值,因此当其他模块需要刚刚定义的模块时,它将作为参数注入。
2) 您可以计算该文件的 md5 校验和并根据 "official" RequireJS 库
对其进行验证关于您遇到的错误。也许您需要设置 shim 以确保 jQuery 在需要 jQuery?
的模块之前加载