Очень простой Backbone / Underscore через проблему с Require.js, которая меня беспокоит

Я пытаюсь реализовать ЧРЕЗВЫЧАЙНО базовый тест, в котором используются jquery, underscore.js и backbone.js, загруженные через require.js, и по какой-то причине я просто не могу все выстроить должным образом. Исследования показывают, что у других не было таких же проблем, поэтому я знаю, что это должно быть что-то простое, чего я просто не вижу.

Моя проблема заключается в том, что когда загружается backbone.js, он не может найти ссылку на _. Я обнаружил, что другие люди сообщают о той же проблеме, но проблема обычно заключалась в передаче ссылок на зависимости в обработчики в неправильном порядке или в других очевидных проблемах. Это происходит при загрузке магистрали.

Я также видел ряд «механических» решений, таких как «поместить все в один файл» и просто загрузить их традиционным способом, включив несколько скриптов в правильном порядке, но я ДЕЙСТВИТЕЛЬНО хочу получить это работает, поскольку кажется, что это такой мощный подход.

Изначально я начал со структуры здесь http://backbonetutorials.com/organizing-backbone-using-modules/ , которая работает в демоверсии, но кажется немного хрупкой, потому что когда я пытаюсь сделать очень Простая модификация или сборка простого образца с нуля, ломается.

После того, как я слишком долго бился об этом, я вернулся и нашел эту страницу Загрузка Backbone и Underscore с помощью RequireJS с другим простым примером, и я восстановил надеяться. Однако после создания на его основе нового теста я ВСЕ ЕЩЕ получаю ту же проблему, даже несмотря на то, что ветвь магистрали 0.5.3-optamd должна обрабатывать свою собственную зависимость от подчеркивания.

Без лишних слов, вот супер-простой код, который должен работать, но вместо этого сводит меня с ума. Надеюсь, что это что-то очевидное, что я как-то пропустил:

index.html



    
        Backbone.js/Underscore.js via Require.js Learning Page
        
        
    
    
        
Backbone.js/Underscore.js via Require.js Learning Page

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 };
        }
);

Точный вывод консоли:

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, {

Я использую Windows 7 машина с использованием Chrome 17.0.938.0 dev-m.

Мои версии сценария:

backbone:       0.5.3-optand
jquery:         1.7
require:        1.0.1
underscore:     1.2.2

Моя структура каталогов:

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

Я не могу поверить, насколько это мне сложно, и очень надеюсь, что кто-то сможет пролить свет на то, что, черт возьми, здесь происходит.

15
задан Community 23 May 2017 в 12:07
поделиться