1

Я знаю, что requireJS поддерживает синтаксис сахара, является ли следующий код правильным для загрузки модуля, расположенного в js/window/startup.js, с зависимостями jquery, underscore и Backbone?RequireJS с использованием Sugar Syntax?

require.config({ 
    baseUrl: 'http://localhost/js/', 
    path: { 
    jquery: '/lib/jquery-1.9.1.min', 
    underscore: '/lib/underscore-1.4.4', 
    backbone: '/lib/backbone-1.0' 
    } 
}); 

require([ 
    './window/startup', 
    'jquery', 
    'underscore', 
    'backbone', 
], function(Startup){ 
    Startup.init(); 
}); 

код в JS/окна/startup.js:

define(function (require) { 
    var $ = require('jquery'); 
     _ = require('underscore'); 
     Backbone = require('backbone'); 

    //Test to see if module is being fired 
    console.log('The module code has been executed!'); 

    var init = function(){ 
    /* SOME CODE */ 
    //Test to see if the init function has fired 
    console.log('The initialize function has fired!'); 
    } 

    return { 
    init: init 
    } 

}); 

Все это, кажется, чтобы соответствовать документации, но когда я запускаю этот код, ни один из двух консольных сообщений отображаются.

+0

Спасибо за головы - написал это на лету. Все еще не разрешил ошибку, хотя ... – AlexZ

+0

Я сделал ответ ниже, выделив различные ошибки, которые у вас есть в вашем коде. – Lukas

+0

Просто быстрый совет: если вы хотите использовать синтаксис CommonJS, а не обертывать свои модули в define (...), проверьте cajon - https://github.com/requirejs/cajon –

ответ

2

У вас есть куча синтаксических ошибок, распространяемых по всему вашему коду. Выполните this plunker для рабочего примера.

Вот что вы получили неправильный:

require.config({       // NEED PARENTHESIS HERE 
    baseUrl: 'http://localhost/js/', 
    paths: {        // SHOULD BE paths, NOT path 
    jquery: '/lib/jquery-1.9.1.min', 
    underscore: '/lib/underscore-1.4.4', 
    backbone: '/lib/backbone-1.0' 
    } 
});          // NEED END PARENTHESIS HERE 

require([ 
    './window/startup', 
    'jquery', 
    'underscore', 
    'backbone'        // GET RID OF TRAILING COMMA 
], function(Startup){ 
    Startup.init(); 
}); 

И в вашем другом файле:

define(function (require) {    // GET RID OF EXTRA PARENTHESIS IN HERE 
    var $ = require('jquery'),    // SHOULD BE COMMA, NOT SEMICOLON 
     _ = require('underscore'),   // SHOULD BE COMMA, NOT SEMICOLON 
     Backbone = require('backbone'); 

    //Test to see if module is being fired 
    console.log('The module code has been executed!'); 

    var init = function(){     // NEED AN ASSIGNMENT, INSTEAD OF JUST var fn() {} 
    /* SOME CODE */ 
    //Test to see if the init function has fired 
    console.log('The initialize function has fired!'); 
    }; 

    return { 
    init: init 
    }; 

});          // NEED END PARENTHESIS HERE 

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

+0

Спасибо за указывая на синтаксические ошибки, но они не являются корнем проблемы - даже если они исправлены, код все равно не работает. – AlexZ

+0

Вы сравнили свой код с примером plunker, с которым я связался в ответ? Это работает. , , , – Lukas

+0

Да, к сожалению нет кубиков :( – AlexZ