Таким образом, ключ к этой проблеме - изменения в underscore.js.В частности тот факт, что теперь он поддерживает AMD (определение асинхронного модуля).Тот факт, что подчеркивание больше не присоединяется к глобальному пространству имен при обнаружении require, нарушает схему, используемую для разрешения стандартного асинхронного синтаксиса require, но все же поддерживает синхронную загрузку.
Теперь, когда JQuery, Underscore & Backbone (0.5.3 не регистрирует себя, вам нужно a ) поддерживать асинхронную загрузку, вы можете отказаться от этих взломанных библиотек в пользу стандартных и требовать имена, с которыми эти библиотеки регистрируются сами.Как это:
Main.js
require.config({
baseUrl: "js",
paths: {
jquery: "libs/jquery/jquery",
underscore: "libs/underscore/underscore",
backbone: "libs/backbone/backbone"
},
waitSeconds: 10
});
require([
"app"
],
function(App){
App.initialize();
console.log("Main initialized...");
});
index.js
define([
"jquery",
"underscore",
"backbone"
],
function($, _, Backbone){
console.log(_);
console.log(Backbone);
var IndexView = Backbone.View.extend({
render: function(){
var username = getCookie("username");
var data = {username: username};
var compiled = _.template("<h1>Welcome <%= username %></h1>", data);
$(this.el).html(compiled);
$("#lt-col").html(this.el);
}
});
return new IndexView();
});
Другие определения были изменены, чтобы отразить новые псевдонимы нижнего регистра.
Извлечь фиксированный код здесь