1

我们正在构建使用 RequireJS 进行模块化开发/依赖管理的 Web 应用程序。
我们使用以下方法来解决问题:

<script data-main="js/main" src="js/libs/require/require.js"></script>

Web 应用程序还使用与大型机系统通信所需的第三方小程序。小程序有一个回调函数,一旦与它通信的 api 初始化后执行,api 对象作为参数传入。例如

/*
 * 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;

 }  

基本上,以上内容需要成为应用程序中许多模块的依赖项。

如何使上述函数成为模块依赖项,以便那些需要它的模块可以使用 api 对象?

4

1 回答 1

3

您似乎想define为您的 API 使用类似异步的方法。要使用 require.js,您需要创建一个小插件。结果,您将拥有以下文件:

1)myapi.js(API模拟文件)

// this is actually simulation of your third party code
setTimeout(function() {
    if(typeof jsapiInitialized === 'function') jsapiInitialized('hello!');
}, 1000);

2) myplugin.js (处理你的 API 回调的插件)

define(function(){
    return {
        load : function(name, req, onLoad, config){
            window.jsapiInitialized = function(api) {
                onLoad(api);
            };
            require([name]);
        }
    };
});

3) main.js (测试你的插件)

require(['myplugin!myapi'], function(api){
    alert(api);
});

(其中“myapi”可以是您真正的 API 脚本的路径)

于 2012-12-13T18:19:45.993 回答