web-dev-qa-db-ja.com

requireJSのグローバル変数

重複の可能性:
AMD(require.js)の使用中にBackbone.jsにブートストラップされたモデルをロードする方法

これは私の問題についての簡単なデモです。

id_userファイルのmain.jsにアクセスする必要があります。私の質問は、この状況でグローバル変数を回避する方法は?この目的でグローバル変数を使用するのは悪い習慣ですか?

main.js

require({
    paths : {
        jQuery : 'http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min'
    }
});

require([ 'jQuery' ], function() {
       alert(id_user);
    });

index.php

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

<script type="text/javascript">
function users() {
    id_user = <?php echo $id; ?>
}

users();
</script>
11
daniel__

モジュールを処理するためにrequirejsを使用するプロジェクトでこのような使用法のためのグローバル変数があってはならず、すべてのモジュール(およびそれらのプロパティ/メソッド)が環境をきれいに保つためにグローバルに宣言されることはありません。 1つのモジュールで他のモジュールの変数セットを使用する必要がある場合は、APIを介して相互に通信するか、その変数をプロパティとして設定し、モジュールを要求して、その方法でプロパティを取得する必要があります。

しかし、実際にrequirejsが必要かどうかを自問する必要があるかもしれません。適切なモジュールベースのアプリケーションを構築したい場合(変数を渡す方法がわからない場合はわかりません)、はい、JSからいくつかのファイルをロードしてからLazyLoad(http:// www。 appelsiini.net/projects/lazyload)がおそらく答えです。 requirejsのフットプリントを特に考慮して、ケースに応じて検討する価値があると言ってください。

10
GillesC

あなたが探しているのは、プロジェクトに変数をbootstrap設定する機能です。これは、あなたの質問に答えます。

AMD(require.js)の使用中にBackbone.jsにブートストラップされたモデルをロードする方法

2
dlrust