Javascript 模块的RequireJS回调依赖项
我们正在构建使用RequireJS进行模块化开发/依赖关系管理的web应用程序。Javascript 模块的RequireJS回调依赖项,javascript,requirejs,Javascript,Requirejs,我们正在构建使用RequireJS进行模块化开发/依赖关系管理的web应用程序。 我们通过以下几点来解决问题: <script data-main="js/main" src="js/libs/require/require.js"></script> 基本上,以上需要成为应用程序中许多模块的依赖项 如何使上述函数成为模块依赖项,以便api对象可供需要它的模块使用?您似乎希望对api使用异步方法,如定义方法。要使用require.js,您需要一个小插件。因此,您将拥有以
我们通过以下几点来解决问题:
<script data-main="js/main" src="js/libs/require/require.js"></script>
基本上,以上需要成为应用程序中许多模块的依赖项
如何使上述函数成为模块依赖项,以便api对象可供需要它的模块使用?您似乎希望对api使用异步方法,如
定义方法。要使用require.js,您需要一个小插件。因此,您将拥有以下文件:
1)myapi.js(API模拟文件)
2)myplugin.js(处理API回调的插件)
3)main.js(用于测试插件)
(其中“myapi”可以是实际API脚本的路径)我们无法访问任何API脚本(据我所知),我们只需将JSAPInitialized()添加到页面,小程序调用它,并传入API参数。这有问题吗?你没问题。您不需要修改任何内容。如您所见,jsapinitialized
函数是由这段代码自动创建的:window.jsapinitialized=function(api){…
。当从第三方脚本调用该函数时,该函数只需通过requirejs internal.OK传递API,因为jsapinitialized
是自动调用的,是否需要myapi.js?如果不需要,那么需要什么()
参数与main.js中的参数类似?不,你不需要myapi.js-它只是模拟你的情况。这实际上是你的“第三方脚本”。我制作了这些本地文件来测试我的答案。你需要的参数应该是:require(['myplugin!)!http://example.com/api.js“])
(也可以使用相对路径)好的,这就是我的想法,但我不确定。我只需要找到api.js的位置。这应该很容易…再次感谢你的帮助!顺便问一下,这是插件的典型用途吗,外部依赖?
/*
* This function is invoked automatically after the Reflection session has
* completed its initialization. A reference to the JavaScript API is passed
* in as a parameter.
*/
function jsapiInitialized( api ) {
return api;
}
// this is actually simulation of your third party code
setTimeout(function() {
if(typeof jsapiInitialized === 'function') jsapiInitialized('hello!');
}, 1000);
define(function(){
return {
load : function(name, req, onLoad, config){
window.jsapiInitialized = function(api) {
onLoad(api);
};
require([name]);
}
};
});
require(['myplugin!myapi'], function(api){
alert(api);
});