Не могу использовать 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 и подчеркивания.
Это работает для меня и имеет смысл.
Пожалуйста, поправьте меня, если это не так.