Не могу использовать requirejs

Я новичок в require.js.
У меня следующая проблема. Я связал require.js:

<script data-main="/Scripts/page/main" src="/Scripts/framework/require.js"></script>

код main.js

require.config(
{
    shim: {
        backbone: {
            exports: 'backbone'
        }
    },paths: {
    jquery: "/Scripts/framework/jquery/jquery-1.6.4",
    underscore: "/Scripts/framework/underscore/underscore",
    backbone: "/Scripts/framework/backbone/backbone"
}
});
require(["jquery"], function (jquery) {
// why jquery is undefined?
})

Я пытался использовать его, как в руководстве, но, к сожалению, это не работает. Почему в функции require переменная jquery не определена? Спасибо за любую помощь.

2 ответа

Проблема в том, что ваш baseUrlгде requireJs будет загружать скрипт, это тот, который вы указали в data-main приписывать. Из документов:

Если в конфигурации явно не задано ни одного baseUrl, значением по умолчанию будет местоположение HTML-страницы, которая загружает require.js. Если используется атрибут data-main, этот путь станет baseUrl.

В соответствии с этим ваши пути должны выглядеть так:

require.config({
  shim: {
    backbone: {
      exports: 'backbone'
    }
  },
  paths: {
    jquery: "../Scripts/framework/jquery/jquery-1.6.4",
    underscore: "../Scripts/framework/underscore/underscore",
    backbone: "../Scripts/framework/backbone/backbone"
  }

Вы также можете установить baseUrl в корне вашего проекта, как это:

require.config({
  baseUrl: "./",
  shim: {
    backbone: {
      exports: 'backbone'
    }
  },
  paths: {
    jquery: "Scripts/framework/jquery/jquery-1.6.4",
    underscore: "Scripts/framework/underscore/underscore",
    backbone: "Scripts/framework/backbone/backbone"
  }

Я только что побежал через ту же проблему.

Я тоже новичок в этом, но я нашел хорошее решение, объясненное здесь. Загрузка Backbone и Underscore с использованием RequireJS

В основном это расширение прокладки для:

requirejs.config({

    baseUrl: 'js/lib', 

    shim: {
        underscore: {
            exports: '_'
        },
        backbone: {
            deps: ['underscore', 'jquery'],
            exports: 'backbone'
        }
    },  

    paths: {
        app: '../app',
        jquery: 'jquery-1.10.2.min',
        backbone: 'backbone.min',
        underscore: 'underscore.min'
    }   
});

requirejs(['jquery', 'underscore', 'backbone'], function($, _, Backbone) {  
    console.log('here');
});

Кажется, это подчеркивание _ и основа в зависимости от jquery и подчеркивания.

Это работает для меня и имеет смысл.

Пожалуйста, поправьте меня, если это не так.

Другие вопросы по тегам