Tôi đang cố triển khai thử nghiệm cơ bản EXTREMELY sử dụng jquery, underscore.js và backbone.js được tải qua require.js và vì một lý do nào đó tôi dường như không thể có được mọi thứ xếp hàng đúng cách. Nghiên cứu cho thấy những người khác đã không có những vấn đề tương tự vì vậy tôi biết nó phải là một cái gì đó đơn giản mà tôi chỉ không nhìn thấy.Backbone/Underscore rất cơ bản thông qua vấn đề Require.js lái xe cho tôi batty
Sự cố tôi gặp phải là khi backbone.js đang tải, nó không thể tìm thấy tham chiếu đến _. Tôi đã tìm thấy những người khác báo cáo cùng một vấn đề nhưng vấn đề thường đi qua tham chiếu phụ thuộc vào trình xử lý theo thứ tự sai hoặc các vấn đề rõ ràng khác. Điều này xảy ra khi xương sống đang tải.
Tôi cũng thấy một số giải pháp 'cơ khí' như 'đặt mọi thứ vào cùng một tệp' và chỉ tải chúng theo cách truyền thống bằng cách có một số tập lệnh bao gồm theo thứ tự đúng nhưng tôi thực sự muốn điều này làm việc vì nó có vẻ như một cách tiếp cận mạnh mẽ như vậy.
Ban đầu tôi bắt đầu với cấu trúc ở đây http://backbonetutorials.com/organizing-backbone-using-modules/ hoạt động trong bản trình diễn, nhưng cảm thấy một chút mong manh vì khi tôi cố gắng sửa đổi rất đơn giản hoặc xây dựng một mẫu đơn giản từ đầu, nó sẽ bị hỏng.
Sau khi đánh đầu với điều này quá lâu, tôi đã quay lại và tìm thấy trang này Loading Backbone and Underscore using RequireJS bằng một ví dụ đơn giản khác và tôi lấy lại hy vọng. Tuy nhiên, sau khi xây dựng một thử nghiệm mới dựa trên nó, tôi STILL nhận được cùng một vấn đề mặc dù chi nhánh 0.5.3-optamd của xương sống được cho là phải xử lý sự phụ thuộc của riêng nó trên dấu gạch dưới.
Nếu không có thêm quảng cáo, đây là mã siêu thẳng tiến sẽ hoạt động nhưng thay vào đó khiến tôi phát điên. Đây là hy vọng đó là một cái gì đó rõ ràng tôi chỉ bỏ lỡ bằng cách nào đó:
index.html
<!DOCTYPE html>
<html>
<head>
<title>Backbone.js/Underscore.js via Require.js Learning Page</title>
<script src="js/libs/require/require.js"></script>
<script src="js/main.js"></script>
</head>
<body>
<div>Backbone.js/Underscore.js via Require.js Learning Page</div>
<div class="testhook"></div>
</body>
</html>
js/main.js
require.config({
paths: {
'jquery': 'libs/jquery/1.7/jquery',
'underscore': 'libs/underscore/1.2.2/underscore',
'backbone': 'libs/backbone/0.5.3-optamd/backbone'
},
baseUrl: '/js',
urlArgs: 'v=1.0'
});
require([
'domReady',
'app'
],
function(domReady, App){
domReady(function(){
console.log('Dom is ready');
App.init();
});
}
);
js/app.js
// Filename: app.js
define([
'jquery',
'underscore',
'backbone'
],
function($, _, Backbone){
var init = function(){
console.log('app.js > init()');
// jquery test (WORKS)
$('.testhook').append('testhook append');
// underscore test (WORKS)
console.log(_.map([1, 2, 3], function(n){ return n * 2; }));
// backbone test (DIES)
var artist = new Backbone.Model({
firstName: "Wassily",
lastName: "Kandinsky"
});
artist.set({birthday: "December 16, 1866"});
console.log(JSON.stringify(artist));
}
return { init: init };
}
);
Các chính xác đầu ra bàn điều khiển là:
Uncaught TypeError: Cannot call method 'extend' of undefined (backbone.js:150)
main.js:18 Dom is ready
app.js:11 app.js > init()
app.js:17 [2, 4, 6]
app.js:20 Uncaught TypeError: Cannot read property 'Model' of null (app.js:20)
NOTE:
Line 150 in unminified backbone.js is:
_.extend(Backbone.Model.prototype, Backbone.Events, {
Tôi đang sử dụng máy tính chạy Windows 7 sử dụng Chrome 17.0.938.0 dev-m.
phiên bản kịch bản của tôi là:
backbone: 0.5.3-optand
jquery: 1.7
require: 1.0.1
underscore: 1.2.2
cấu trúc thư mục của tôi là:
js
+-- libs/
¦ +-- backbone/
¦ ¦ +-- 0.5.3-optamd/
¦ ¦ +-- backbone.js
¦ +-- jquery/
¦ ¦ +-- 1.7/
¦ ¦ +-- jquery.js
¦ +-- require/
¦ ¦ +-- require.js
¦ +-- underscore/
¦ +-- 1.2.2/
¦ +-- underscore.js
+-- app.js
+-- domReady.js
+-- main.js
+-- order.js
index.html
Tôi không thể tin rằng đây là đem lại cho tôi bao nhiêu khó khăn và đang thực sự hy vọng ai đó có thể làm sáng tỏ về những gì heck đang diễn ra ở đây.
ví dụ của bạn làm việc cho tôi 100%. bạn đang sử dụng phiên bản Backbone chính xác nào? optamd hoặc optamd3? – Riebel