Загрузка не 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 и поэтому должна быть объявлена ​​таким же образом.

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