我正在使用backbone和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)
非常感谢你!
答案 0 :(得分: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"]
}
]