Tôi đang cố tải Backbone và Underscore (cũng như jQuery) bằng RequireJS. Với các phiên bản mới nhất của Backbone và Underscore, nó có vẻ khó khăn. Đối với một, Underscore tự động đăng ký chính nó như một mô-đun, nhưng Backbone giả định Underscore có sẵn trên toàn cầu. Tôi cũng nên lưu ý rằng Backbone dường như không đăng ký chính nó như là một mô-đun khiến nó không phù hợp với các lib khác. Đây là main.js tốt nhất tôi có thể làm với nó hoạt động:
require(
{
paths: {
'backbone': 'libs/backbone/backbone-require',
'templates': '../templates'
}
},
[
// jQuery registers itself as a module.
'http://cdnjs.cloudflare.com/ajax/libs/jquery/1.7/jquery.min.js',
// Underscore registers itself as a module.
'http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.2.1/underscore-min.js'
], function() {
// These nested require() calls are just due to how Backbone is built. Underscore basically says if require()
// is available then it will automatically register an "underscore" module, but it won't register underscore
// as a global "_". However, Backbone expects Underscore to be a global variable. To make this work, we require
// the Underscore module after it's been defined from within Underscore and set it as a global variable for
// Backbone's sake. Hopefully Backbone will soon be able to use the Underscore module directly instead of
// assuming it's global.
require(['underscore'], function(_) {
window._ = _;
});
require([
'order!http://cdnjs.cloudflare.com/ajax/libs/backbone.js/0.5.3/backbone-min.js',
'order!app'
], function(a, app) {
app.initialize();
})
});
Tôi nên đề cập rằng, trong khi nó hoạt động, trình tối ưu hóa cuộn cảm với nó. Tôi nhận được như sau:
Tracing dependencies for: main
js: "/home/httpd/aahardy/requirejs/r.js", line 7619: exception from uncaught JavaScript throw: Error: Error: Error evaluating module "undefined" at location "/home/httpd/aahardy/phoenix/trunk/ui/js/../../ui-build/js/underscore.js":
JavaException: java.io.FileNotFoundException: /home/httpd/aahardy/phoenix/trunk/ui/js/../../ui-build/js/underscore.js (No such file or directory)
fileName:/home/httpd/aahardy/phoenix/trunk/ui/js/../../ui-build/js/underscore.js
lineNumber: undefined
http://requirejs.org/docs/errors.html#defineerror
In module tree:
main
Có cách nào tốt hơn để xử lý này? Cảm ơn!