我必须使用报告工具(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]我目前对“定义”块中行为的理解是,只有加载/可用“定义”指令中提到的资源后,才会执行JS代码。这是对的吗?在上面的示例中,仅当加载资源“ someResource.js”时,才会“评估” /执行A)或C)中提到的部分。我理解正确吗?
2)IBM Cognos Analytics使用的RequireJs库显示以下内容:
/ ** vim:et:ts = 4:sw = 4:sts = 4* @license RequireJS 2.1.14 Dojo Foundation(c)2010-2014版权所有(c)。*可通过MIT或新的BSD许可证获得。*有关详细信息,请参见:http://github.com/jrburke/requirejs* /
然后我可以假设IBM Cognos Analytics使用的RequireJS库是“公共” /“标准”而不是派生的,因此RequireJS的所有功能和行为应在IBM Cognos Analytics中可用。
我问所有这一切,因为我们面临的问题是,在加载资源之前似乎要执行一些JS代码;我们收到类似““ $”不存在..etc ..“的错误。]
欢迎任何帮助/建议。谢谢!
1)。 define()
的回调仅执行一次以定义模块。因此,在您的示例中,将仅执行A),但是B)和C)是monModule
]原型中方法的代码
[以下是执行define()
函数时RequireJS在后台执行的步骤:
2)您可以为该文件计算md5校验和,并针对“官方” RequireJS库对其进行验证
关于您得到的错误。也许您需要设置垫片以确保在需要jQuery的模块之前加载了jQuery?