4

バックボーンとjquerymobileとともにrequirejsアプリを最適化しています.以下は私のファイル構造です:

/application
    /app
       /models
       /views
       /collections
    /scripts
       main.js
       text.js
       /assets
            backbone.js
       /libs
            /jquery
                /jquery.js
                /jquery-mobile.js
 app.js
 r.js
/public
    /css
        /style.css

コンソールで、ff コマンドを実行しようとしました。

node ../r.js -o name=main out=../build.js baseUrl=. paths.models=../app/models paths.app=../app

このエラーを除いて、パスが適切に定義され、適切に機能していることを確認しました(これは、コマンドを実行したときに得られるものです):

Tracing dependencies for: main
Error: Module loading did not complete for: jquery
    at Function.traceDependencies (/home/dunhak/public_html/my_path/etc/application/r.js:15117:19)

どうもありがとう!

4

1 に答える 1

4

これの一部は、スクリプトをロードする順序によって異なります。jQuery は require.js の前にロードされますか、それともその逆ですか?

jQuery の最後の数行に、解決策の手掛かりが含まれている可能性があります。

if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
    define( "jquery", [], function () { return jQuery; } );
}

私の推測では、あなたは次のようなことをしていると思います:

var $ = require('jquery'); //lower-case Q

個人的には、私はやっています:

var $ = require('jQuery'); //upper-case Q

これはすべてrequire.configに依存する可能性があります-私は次のようなものを使用します:

require.config({
    baseUrl: "/js",

    paths : {
        jQuery: 'lib/jquery-1.7.1.min'
        //, etc...
    }
})

考慮すべきもう 1 つの点: 最適化された出力の一部として jQuery を含めたくない場合があります。代わりに、事前に縮小されたバージョンを CDN (など) からロードします。その場合、ここで説明されているように jquery モジュールを除外する必要があります: http://requirejs.org/docs/jquery.html

modules: [
    {
        name: "main",
        exclude: ["jquery"]
    }
]
于 2012-06-30T17:54:50.237 に答える