12

Possible Duplicate:
How to load bootstrapped models in Backbone.js while using AMD (require.js)

This is a simple demo about my problem.

I need to access the id_user in main.js file. My question is, how to avoid global variables in this situation? It is bad practice use global variables for this purpose?

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>
4

2 に答える 2

10

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

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

于 2012-04-17T22:05:00.990 に答える
2

あなたが探しているのは、構成変数をプロジェクトにブートストラップする機能です。これはあなたの質問に答えます

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

于 2012-04-25T18:30:12.090 に答える