1

私はrequirejsを使用して外部ベンダーjsをロードし、バックボーンやアンダースコアなどのグローバル変数を非表示にしようとしています.

これが私のコードです:

<script data-main="./main" src="<?php echo $rootRequirejs?>/require.js"></script>
<script type="text/javascript">
    require.config({
        baseUrl: "/web/js",
        paths: {
            "jquery": "/vendor/js/jquery-1.7.1.min",
            'underscore': '/vendor/js/underscore-min',
            'backbone': '/vendor/js/backbone-min'
        }
    });

ここに私の質問があります:

1) javascript コンソールに行って、バックボーンまたはアンダースコアを書くと、それらは定義されています….
コンソールからではなく、main.js ファイルからのみアクセスできるようにすべきだと思います。
なぜ彼らはグローバルなのですか?

4

2 に答える 2

1

これらは、ライブラリ自体(バックボーンなど)の記述方法により、デフォルトでグローバルになります-グローバルスペースを明示的に使用します(b / cまあ、それがjsの仕組みです)。これらのライブラリの AMD フォークを試しましたか?

上記のコメントでFlorianが指摘したように、おそらくより良いオプションは、Require2.0を使用することです。これには、AMD以外のライブラリでの作業に役立つ「shim」機能が同梱されているためです...ただし、グローバルを排除するかどうかはわかりません.

fwiw、グローバルを避ける特別な理由がない限り、通常はそれほど大したことではありません。

于 2012-05-29T14:39:01.017 に答える