8

インターネットで requireJS を使用して BB アプリケーションの開発を開始する方法の多くの例を見ましたが、私は一種の迷子になっています。

AMDには、本当に必要な場合にのみファイルをロードするという目標があると思います。すぐにはありません。

開発者がほぼすべてのファイルをメイン ファイルの先頭に依存関係として置いた例だけが表示されるのはなぜですか?

以下に例を示します: https://github.com/jcreamer898/RequireJS-Backbone-Starter/tree/master/js

このアプリケーションは、views/view.js を必要とする routers/home.js をロードする app.js に依存する main.js を即座にロードします。

たとえば、ビューの依存関係 (モデル、テンプレート、コレクション、サード パーティ API など) が、ルーターが呼び出して初期化したときにのみ読み込まれるビューを追加して、このアプリケーションを拡張する方法がわかりません。他の方法では、アプリを初期化するときにすべてのファイルをロードする AMD を使用するのはナンセンスです。

同様の例: http://backbonetutorials.com/organizing-backbone-using-modules/ router.js ファイルを参照してください。ユーザーが将来それらを必要とするかどうかはまだわかりません。

アドバイスください、事前に感謝します!

4

1 に答える 1

6

初期ルートで何かをロードする必要があり、Backbone で何かをロードすることは、通常、モデル、コレクション、およびビューを意味するため、このような小さなサンプル アプリではわかりにくいです。リンクしたサンプルにはそれぞれ 1 つしかないため、ほとんどすべてをロードしています。

「オンデマンド」機能が表示され始めるのは、追加のルート/ビュー/モデルなどを追加する場所です。ただし、オンデマンドの読み込みはおそらく AMD/RequireJS の二次的な目標であることに注意してください。主な目標はモジュール性です。次に、オンデマンドでロードするか、オプティマイザーを介してすべてをバンドルするための多くのオプションを提供します

また、ファイルの先頭にすべての require() を配置する必要があると言うものは何もありません。後で行うことができます (たとえば、ルートを開始するとき)。これは、最初にリンクされた例の home.js の修正版です。Chrome 開発ツールを使用している場合は、「デバッガー」のときにネットワーク タブを確認できます。ステートメントは実行を一時停止します。次に、実行を続けて、残りのスクリプトがどのように読み込まれるかを確認します。

define([
    'jquery', 
    'backbone', 
    'underscore'
    ], 
function($, Backbone, _){
    var Router = Backbone.Router.extend({
        initialize: function(){
            Backbone.history.start();
        },
        routes: {
            '': 'home'
        },
        'home': function(){
            debugger;
            require(['views/view'], function (mainView) {
                mainView.render();
            });
        }
    });

    return Router;
});

詳細な背景と、次に進む可能性のある場所については、この人の記事を参照してください。

于 2013-03-27T18:01:25.643 に答える