0

私は require.js を初めて使用するので、ここでのガイダンスはほとんど必要ありません。

/*
 * This app depends on jquery and a remote script called "remote.js" (serve over localhost :p)
 * Locally I will have main.js and require.js.
 * main.js contain an entry function "init" and it depends on jquery
 * and remote.js to be fully loaded.
 */
require.config({
    paths: {
        "jquery": "https://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min",
        "remote": "http://localhost:8000/scripts/remote"
    },  
    shim: {
        "init": {
            deps: ["jquery", "remote"]
        }  
    },  
    urlArgs: "bust=" + (new Date()).getTime()
});

define(["jquery", "remote"], function($, remote) {
    console.log("just entered the outerscope of the init function.");
    console.log(remote);
    return {
        init: function() {
            console.log("entered init function");
        }  
    }  
});

/* the following is in remote.js*/
function remoteF1() {
    console.log("remote function 1 is called.");
};

function remoteF2() {
    console.log("remote function 2 is called.");
};
// and I thought about wrapping them around with "define" or "require"
  1. おそらく init.js を定義することもできますが、そのアイデアを後回しにしたいのですが、initこの main.js ファイル内で呼び出される関数を定義し、それを関数を呼び出すエントリポイントとして使用するにはどうすればよいですremote.jsか??

  2. define/require(['jquery', 'remote'].....また、関数を定義するときに、依存配列をもう一度繰り返す必要がありますか? ありがとう

4

1 に答える 1

1

これを行うには非常に多くのオプションがありますが、すべての選択で remote.js 内で define を使用する必要があります。

名前と値のペアを使用できますが、remoteF1 内で remoteF2 を使用する必要がある場合に問題が発生します。

define(["jquery"], function($) {
    return {
        remoteF1: function() {
            console.log("remoteF1 is called.");
        },
        remoteF2: function() {
            console.log("remoteF2 is called.");
        }
    }   
});

main.js でこれを行うことができます。

define(["jquery", "remote"], function($, remote) {
    console.log("just entered the outerscope of the init function.");
    console.log(remote);
    var remote = new remote();
    remote.remoteF1();
});

または、js オブジェクトを返すこともできます。

define(["jquery"],function($){
    return function(){
        var privateFunction = function(){};
        this.remoteF1 = function () {
            privateFunction();
            console.log("remote function 1 is called.");
        };     
        this.remoteF2 = function () {
            console.log("remote function 2 is called.");
        };
    }
});

remote.js を使用する場合new remote();、2 番目の方法を選択する場合は、using を宣言する必要があります。

誰が remote.js を使用するかわからないため、jquery の依存関係を設定する必要があります。

于 2013-09-06T02:24:59.430 に答える