Вызов функции non amd в requirejs

Я прочитал этот вопрос и хочу понять эту концепцию более четко, поэтому я создал два своих файла

lorem.js:

var lorem = {};

lorem.fun1 = function(){
    console.log('aaa');
};

ipsum.js:

var ipsum = {};
ipsum.color = 'a';

ipsum.fun1 = function(){
    lorem.fun1();
};

Ipsum зависит от lorem. В конфигурации прокладки я сделал что-то вроде этого:

// Filename: main.js

// Require.js allows us to configure shortcut alias
// There usage will become more apparent further along in the tutorial.
require.config({
    baseUrl: 'js',
    paths: {
        /*jquery: [
            // 'https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min' ,
            'libs/jquery/jquery'
        ],
        backbone:[
            'libs/backbone/backbone'
        ],
        underscore:[
            'libs/underscore/underscore'
        ],*/
        ipsum: 'nonamd/ipsum',
        lorem: 'nonamd/lorem'
    },
    shim : {
        /*jquery : {
            exports : 'jQuery'
        },
        underscore : {
            exports : '_'
        },
        backbone : {
            deps : ['jquery', 'underscore'],
            exports : 'Backbone'
        },*/
        ipsum : {
            deps : ['lorem'],
            exports : 'Ipsum'
        }
    }

});

require(['ipsum'],function (Ipsum) {
    console.log(Ipsum);
});

Однако console.log(Ipsum) печатает undefined в консоли. Что я делаю не так?


person anasanjaria    schedule 16.03.2015    source источник


Ответы (1)


Ваша ошибка в конфигурации прокладки.

  ipsum : {
            deps : ['lorem'],
            exports : 'Ipsum'
        }

должно быть

  ipsum : {
            deps : ['lorem'],
            exports : 'ipsum'
        }

Обратите внимание на изменение регистра с 'Ipsum' на 'ipsum'.

ipsum должна быть глобальной переменной в ipsum.js.

В Javascript имена переменных чувствительны к регистру, поэтому ipsum и Ipsum различны. Поскольку вы не определили Ipsum, а только ipsum, при печати он напечатал undefined.

person Vladu Ionut    schedule 16.03.2015