0

私に関連するいくつかの質問(この興味深い質問のような)があるのを見ましたが、私が疑問に思うのはそれを正しく行う方法であり、他の質問またはRequireJSドキュメントからそれを見つけることができませんでした。

私は、1つのhtmlページでのみ実行される非常に重いWebアプリケーションに取り組んでいます。

RequireJSの前は、パブリックメソッドを使用して多くのJSモジュールを実行し、次のようにDomREADYメソッドのonイベントを介してそれらを接続していました。

var DataList = function () {
    this.base = arguments[0];
    this.onUpdate = function (event) { ... }
}

$(function () {
    var dataList = {}; DataList.apply(dataList, [$('#content')]);
    $('table.main', dataList.base).on ('update', dataList.onUpdate);
});

RequireJSを使用すると、DataListとこのような他のすべてのクラスを個々のファイルに分割できることが簡単にわかりますが、その$(function () {});部分はどうでしょうか。

それでもこの方法で維持できますが、プライマリライブラリが読み込まれるときに、jQueryのDOM対応関数の代わりに、RequireJSのmain function()にイベントを配置しますか?

または、JS「クラス」の作成方法を変更して、初期化関数を含める必要がありますか。たとえば、次のように実行すると呼び出されます。

require(['Datalist'], function(dataList) {
    dataList.init($('#content'));
});

私が最も悩むのは、HTMLファイルが1つしかないため、require()ファイルの膨大なリストをロードする必要があるのではないかと心配しています。ライブラリだけをロードして、動作に必要なサブライブラリをロードすることをお勧めします。 。

わかりませんが、RequireJSの考え方は少し失われました:/

どうしますか?

4

1 に答える 1

1

このままでもいいのですが、jQuery の DOM 対応関数の代わりに、プライマリ ライブラリがロードされたときに、イベントを RequireJS のメイン function() に配置しますか?

関数または「クラス」をモジュールに分割すると、RequireJSdomReady関数を使用できます。

require(['module1'], function(module1) {
    domReady(function(){
        // Some code here ftw
    })
});

ここでの利点はdomReady、モジュールを即座にダウンロードできるが、DOM の準備が整うまでモジュールを実行しないことです。

「または、JS「クラス」を作成する方法を変更して、たとえば、実行時に呼び出されるinit関数を含める必要がありますか」

この方法でコードを操作する方法を変更する必要はありませんが、おそらく改善できます。あなたの例では、DataListをモジュールにします:

define(function(require) {
    var $ = require('jquery');

    var DataList = function () {
        this.base = arguments[0];
    };

    DataList.prototype.onUpdate = function() {

    };

    return DataList;
});

require(['data-list'], function(DataList) {

    var data = {};

    // Call DataList with new and you won't need to set the context with apply
    // otherwise it can be used exactly as your example
    new DataList(data);

});

「私を最も悩ませているのは、html ファイルが 1 つしかないため、require() がファイルの膨大なリストをロードする必要があるのではないかと心配していることです。動作するにはライブラリが必要です。」

コードを必要に応じてモジュール化してから、オプティマイザーを使用して 1 つの JS ファイルにパッケージ化します。

于 2012-07-26T13:06:27.873 に答える