Загрузка не amd модулей с помощью require.js
В настоящее время я использую require.js для веселого побочного проекта. Я работаю, все работает нормально, кроме плагина для подсветки синтаксиса кода, называемого prism.js. Я вижу, что плагин вытягивается через вкладку сети в Chrome, но плагин не инициализируется.
Я не уверен, если это проблема с требованием или плагин является проблемой, и мне было интересно, если кто-нибудь может помочь.
Вот посмотрите на мой main.js:
require.config({
// 3rd party script alias names
paths: {
// Core Libraries
modernizr: "libs/modernizr",
jquery: "libs/jquery",
underscore: "libs/lodash",
backbone: "libs/backbone",
handlebars: "libs/handlebars",
text: "libs/text",
prism: "plugins/prism",
templates: "../templates"
},
// Sets the configuration for your third party scripts that are not AMD compatible
shim: {
"backbone": {
"deps": ["underscore", "jquery", "handlebars"],
"exports": "Backbone" //attaches "Backbone" to the window object
}
}
});
// Include Specific JavaScript
require(['prism', 'modernizr', 'jquery', 'backbone', 'routers/router', 'views/AppVIew' ],
function(Prism, Modernizr, $, Backbone, Router, App) {
this.router = new Router();
this.App = new App();
}
);
3 ответа
Измените раздел прокладок, чтобы включить призму, и убедитесь, что он экспортирует "Призма":
shim: {
"backbone": {
"deps": ["underscore", "jquery", "handlebars"],
"exports": "Backbone" //attaches "Backbone" to the window object
},
"prism": {
"exports": "Prism"
}
}
Рули и Prism не совместимы с AMD(определение асинхронного модуля), поэтому вам нужно самостоятельно подобрать его, как показано ниже;
requirejs.config({
shim: {
'backbone': {
"deps": ["underscore", "jquery", "handlebars"],
"exports": "Backbone" //attaches "Backbone" to the window object
},
'handlebars': {
"exports": 'Handlebars'
},
'prism': {
"exports": "Prism"
}
}
});
Вы можете посмотреть сайт документации require.js shim; http://requirejs.org/docs/api.html
Надеюсь, это поможет
Призма должна быть добавлена к shim
тоже. Так же, как магистраль, она не совместима с AMD и поэтому должна быть объявлена таким же образом.