4

私はジョン・パパの SPA に関する複数サイトのコースを勉強しています。

彼のmain.jsでは、バンドルに含まれる各 js ライブラリに名前を付けました。

(function () {
var root = this;

define3rdPartyModules();


function define3rdPartyModules() {
    // These are already loaded via bundles. 
    // We define them and put them in the root object.
    define('jquery', [], function () { return root.jQuery; });
    define('ko', [], function () { return root.ko; });
    define('amplify', [], function () { return root.amplify; });
    define('infuser', [], function () { return root.infuser; });
    define('moment', [], function () { return root.moment; });
    define('sammy', [], function () { return root.Sammy; });
    define('toastr', [], function () { return root.toastr; });
    define('underscore', [], function () { return root._; });
}

})();

しかし、rootここは何ですか?


そうすることで、defineステートメントでこれらの短い名前を呼び出すことができます。

define('vm.session',
['ko', 'datacontext', 'config', 'router', 'messenger', 'sort'],
function (ko, datacontext, config, router, messenger, sort) {

現在、私はそれを行う方法がわかりません。したがって、私の作業defineステートメントは醜いです:

define('vm.admin.outfitters',
['/Scripts/lib/jquery-1.8.1.js', '/Scripts/lib/jsrender.js', ...], function(){...

私はもっ​​と良い方法があるはずだと知っています。これらの js ファイルはすべて、スクリプト バンドルに既に含まれています。これらのスクリプトを参照するにはどうすればよいですか?

4

1 に答える 1

4

RE: ルート

RequireJS と AMD 対応ライブラリは、オブジェクトをグローバル スコープから削除します (ko など)。一部のプラグインはグローバル スコープでそれらを必要とするため、これらのプラグインをシム処理するか、オブジェクトをグローバル スコープに戻すことができます。後者は、このコードで起こっていることです。主に Knockout 用のプラグインに対して行われています。

RE: define ステートメント

最初のパラメーターはモジュールの名前なので、問題ありません。2 番目のパラメーターは、R​​equireJS が認識するモジュールのリストです。3 番目のパラメーターは、それを表す一致する変数です。したがって、コードには次のようなものがあるかもしれません...

define('vm.admin.outfitters',
['jquery', 'jsrender'], function($, jsrender) { 
于 2012-09-14T16:41:58.130 に答える