4

我正在优化我的 requirejs 应用程序以及主干和 jquerymobile,以下是我的文件结构:

/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...
    }
})

另一件需要考虑的事情:您可能不希望将 jQuery 作为优化输出的一部分包含在内——相反,从 CDN(等)加载预先缩小的版本。在这种情况下,您需要排除 jquery 模块,如下所述:http ://requirejs.org/docs/jquery.html

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